Skip to content

Commit 233ca9a

Browse files
committed
add test for forced in redistribute_block_pairs
1 parent d91596c commit 233ca9a

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

hypothesis-python/src/hypothesis/internal/conjecture/shrinker.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1271,7 +1271,7 @@ def redistribute_block_pairs(self, chooser):
12711271
return
12721272

12731273
if next_node.was_forced:
1274-
# avoid modifying a forced node! Note that it's fine for next_node
1274+
# avoid modifying a forced node. Note that it's fine for next_node
12751275
# to be trivial, because we're going to explicitly make it *not*
12761276
# trivial by adding to its value.
12771277
return

hypothesis-python/tests/conjecture/test_shrinker.py

+21
Original file line numberDiff line numberDiff line change
@@ -578,3 +578,24 @@ def shrinker(data):
578578
shrinker.fixate_shrink_passes(["lower_blocks_together"])
579579

580580
assert list(shrinker.buffer) == [1, 0] + [0] * n_gap + [0, 1]
581+
582+
583+
def test_redistribute_block_pairs_with_forced_node():
584+
@run_to_buffer
585+
def buf(data):
586+
data.draw_integer(0, 100, forced=15)
587+
data.draw_integer(0, 100, forced=10)
588+
data.mark_interesting()
589+
590+
@shrinking_from(buf)
591+
def shrinker(data):
592+
n1 = data.draw_integer(0, 100)
593+
n2 = data.draw_integer(0, 100, forced=10)
594+
if n1 + n2 > 20:
595+
data.mark_interesting()
596+
597+
shrinker.fixate_shrink_passes(["redistribute_block_pairs"])
598+
# redistribute_block_pairs shouldn't try modifying forced nodes while
599+
# shrinking. Since the second draw is forced, this isn't possible to shrink
600+
# with just this pass.
601+
assert shrinker.buffer == buf

0 commit comments

Comments
 (0)