[PATCH 5 of 5 V4] testing: Add a 'continous' profile
David R. MacIver
david at drmaciver.com
Wed Feb 24 14:22:59 UTC 2016
# HG changeset patch
# User David R. MacIver <david at drmaciver.com>
# Date 1456320006 0
# Wed Feb 24 13:20:06 2016 +0000
# Node ID 9b58a734661a3e82c9f76f83819367a23aad12e6
# Parent dc97731fe93cb9c6e0db21c3e6d1f49202e28570
testing: Add a 'continous' 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 dc97731fe93c -r 9b58a734661a 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
@@ -22,6 +22,7 @@
import hypothesis.strategies as st
from hypothesis import settings, note
from hypothesis.configuration import set_hypothesis_home_dir
+from hypothesis.database import ExampleDatabase
testdir = os.path.abspath(os.environ["TESTDIR"])
@@ -510,6 +511,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,
@@ -528,6 +546,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
More information about the Mercurial-devel
mailing list