From 97fdb6d95d4475a5ace7a933ee339a96ed8eaf88 Mon Sep 17 00:00:00 2001 From: "David R. MacIver" Date: Mon, 25 Jun 2018 09:16:42 +0100 Subject: [PATCH 1/2] Handle changing size during shrinking duplicates --- conjecture-rust/src/engine.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/conjecture-rust/src/engine.rs b/conjecture-rust/src/engine.rs index f9644e5b5d..9f3b1c5fb5 100644 --- a/conjecture-rust/src/engine.rs +++ b/conjecture-rust/src/engine.rs @@ -408,15 +408,20 @@ where fn minimize_duplicated_blocks(&mut self) -> StepResult { let mut i = 0; let mut targets = self.calc_duplicates(); + while i < targets.len() { let target = mem::replace(&mut targets[i], Vec::new()); + let max_target = *target.iter().max().unwrap(); + i += 1; assert!(target.len() > 0); let v = self.shrink_target.record[target[0]]; - let base = self.shrink_target.record.clone(); let w = minimize_integer(v, |t| { - let mut attempt = base.clone(); + if max_target >= self.shrink_target.record.len() { + return Ok(false); + } + let mut attempt = self.shrink_target.record.clone(); for i in &target { attempt[*i] = t } From 25706f44e4783871beb6fae37223ce6443757b0e Mon Sep 17 00:00:00 2001 From: "David R. MacIver" Date: Mon, 25 Jun 2018 09:27:59 +0100 Subject: [PATCH 2/2] Add release files --- conjecture-rust/RELEASE.md | 4 ++++ hypothesis-ruby/RELEASE.md | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 conjecture-rust/RELEASE.md create mode 100644 hypothesis-ruby/RELEASE.md diff --git a/conjecture-rust/RELEASE.md b/conjecture-rust/RELEASE.md new file mode 100644 index 0000000000..5faf1456bf --- /dev/null +++ b/conjecture-rust/RELEASE.md @@ -0,0 +1,4 @@ +RELEASE_TYPE: patch + +This release fixes an occasional assertion failure that could occur +when shrinking a failing test. diff --git a/hypothesis-ruby/RELEASE.md b/hypothesis-ruby/RELEASE.md new file mode 100644 index 0000000000..6cfaed26b1 --- /dev/null +++ b/hypothesis-ruby/RELEASE.md @@ -0,0 +1,4 @@ +RELEASE_TYPE: patch + +This release fixes an occasional `RuntimeError` that could occur +when shrinking a failing test.