Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable generator to be seeded via the environment #287

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

neithernut
Copy link

@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