aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/engine.py
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/python/hypothesis/py3/hypothesis/internal/conjecture/engine.py')
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/internal/conjecture/engine.py23
1 files changed, 12 insertions, 11 deletions
diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/engine.py b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/engine.py
index 99a170ca64..2a011a8b11 100644
--- a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/engine.py
+++ b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/engine.py
@@ -47,6 +47,13 @@ MUTATION_POOL_SIZE = 100
MIN_TEST_CALLS = 10
BUFFER_SIZE = 8 * 1024
+# If the shrinking phase takes more than five minutes, abort it early and print
+# a warning. Many CI systems will kill a build after around ten minutes with
+# no output, and appearing to hang isn't great for interactive use either -
+# showing partially-shrunk examples is better than quitting with no examples!
+# (but make it monkeypatchable, for the rare users who need to keep on shrinking)
+MAX_SHRINKING_SECONDS = 300
+
@attr.s
class HealthCheckState:
@@ -811,9 +818,8 @@ class ConjectureRunner:
)
assert ex1.end <= ex2.start
- replacements = [data.buffer[e.start : e.end] for e in [ex1, ex2]]
-
- replacement = self.random.choice(replacements)
+ e = self.random.choice([ex1, ex2])
+ replacement = data.buffer[e.start : e.end]
try:
# We attempt to replace both the the examples with
@@ -822,7 +828,7 @@ class ConjectureRunner:
# wrong - labels matching are only a best guess as to
# whether the two are equivalent - but it doesn't
# really matter. It may not achieve the desired result
- # but it's still a perfectly acceptable choice sequence.
+ # but it's still a perfectly acceptable choice sequence
# to try.
new_data = self.cached_test_function(
data.buffer[: ex1.start]
@@ -922,7 +928,7 @@ class ConjectureRunner:
)
def new_conjecture_data_for_buffer(self, buffer):
- return ConjectureData.for_buffer(buffer, observer=self.tree.new_observer())
+ return self.new_conjecture_data(buffer, max_length=len(buffer))
def shrink_interesting_examples(self):
"""If we've found interesting examples, try to replace each of them
@@ -935,12 +941,7 @@ class ConjectureRunner:
return
self.debug("Shrinking interesting examples")
-
- # If the shrinking phase takes more than five minutes, abort it early and print
- # a warning. Many CI systems will kill a build after around ten minutes with
- # no output, and appearing to hang isn't great for interactive use either -
- # showing partially-shrunk examples is better than quitting with no examples!
- self.finish_shrinking_deadline = time.perf_counter() + 300
+ self.finish_shrinking_deadline = time.perf_counter() + MAX_SHRINKING_SECONDS
for prev_data in sorted(
self.interesting_examples.values(), key=lambda d: sort_key(d.buffer)