# HG changeset patch # User David R. MacIver # Date 1456320006 0 # Node ID 7829d0ba7459e107e60377f62e41bedca515d67a # Parent fc7ee50a0d65e9d22c2ad579299f9ad6a2d6d526 testing: add a 'continuous' profile This gives a good way of letting Hypothesis run until it finds an error, save that error, and be restarted without it picking up on the old bug. This lets you run long-running Hypothesis processes and then perform a manual deduplication task on the bugs found at the end. It's not an entirely satisfying way of using this, but anything much better would require extensive changes to Hypothesis itself. diff -r fc7ee50a0d65 -r 7829d0ba7459 tests/test-verify-repo-operations.py --- a/tests/test-verify-repo-operations.py Wed Feb 24 13:11:30 2016 +0000 +++ b/tests/test-verify-repo-operations.py Wed Feb 24 13:20:06 2016 +0000 @@ -41,6 +41,7 @@ rule, RuleBasedStateMachine, Bundle, precondition) from hypothesis import settings, note, strategies as st from hypothesis.configuration import set_hypothesis_home_dir +from hypothesis.database import ExampleDatabase testdir = os.path.abspath(os.environ["TESTDIR"]) @@ -530,6 +531,23 @@ with acceptableerrors("no shelved changes to apply"): self.hg("unshelve") +class writeonlydatabase(ExampleDatabase): + def __init__(self, underlying): + super(ExampleDatabase, self).__init__() + self.underlying = underlying + + def fetch(self, key): + return () + + def save(self, key, value): + self.underlying.save(key, value) + + def delete(self, key, value): + self.underlying.delete(key, value) + + def close(self): + self.underlying.close() + settings.register_profile( 'default', settings( timeout=300, @@ -548,6 +566,16 @@ ) ) +settings.register_profile( + 'continuous', settings( + timeout=-1, + stateful_step_count=1000, + max_examples=10 ** 8, + max_iterations=10 ** 8, + database=writeonlydatabase(settings.default.database) + ) +) + settings.load_profile(os.getenv('HYPOTHESIS_PROFILE', 'default')) verifyingtest = verifyingstatemachine.TestCase