Enable generator to be seeded via the environment#287
Open
neithernut wants to merge 4 commits intoBurntSushi:masterfrom
Open
Enable generator to be seeded via the environment#287neithernut wants to merge 4 commits intoBurntSushi:masterfrom
neithernut wants to merge 4 commits intoBurntSushi:masterfrom
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This change allows generators in a
QuickCheckinstance 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:
Genwill 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?