Skip to content

Conversation

@neithernut
Copy link
Contributor

@neithernut neithernut commented May 9, 2021

This change allows generators in a QuickCheck instance to be seeded via the environment. The main motivation is faithfully reproducing tests, i.e. with the same seeds. One common use-case would be automated bisects.

For example, a CI system could provide a seed which is stored alongside the report. In the case of failure, that seed could then be used for bisecting, eliminating the chance of falsely flagging a "bad" commit as "good" due to the randomness of input values.

This change is based on #278 (for Gen::from_seed).


What's still missing:

  • Documentation: I found the section of the README mentioning the other environment variables not a suitable place.
  • Decide whether or not it's a problem to use the same seed for all tests. I don't think so, since the same seeded Gen will be used for all runs of a given test, and thus we'll produce different input values for each iteration. But maybe I overlooked something?

jakoschiko and others added 4 commits February 9, 2021 02:13
The seed still can't be set by QuickCheck users, but the new Gen
constructor is useful for other crates that use QuickCheck only for
its Arbitrary trait.

Closes BurntSushi#277
This change allows generators in a `QuickCheck` instance to be seeded
via the environment. This allows reproducing tests by simply setting the
environment variable, e.g. when performing an automated `git bisect`. If
implementations of `Arbitrary` do not pull new entropy during generation
of values, e.g. by using generators returned by `Gen::new`, that is.
Previously, the configuration parameters were described in prose.
Neither the minimum number of valid tests nor any description of the
environment variables which could invluence these parameters were
covered by the text. Naturally, neither was the recently introduced
`QUICKCHECK_SEED`.

This change replaces the prose with a list, which includes not only the
defaults (where applicable) but also the environment variables consultet
during initialization.
@neithernut neithernut changed the title WIP: Enable generator to be seeded via the environment Enable generator to be seeded via the environment May 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants