diff options
Diffstat (limited to 'src/main/java/au/id/zancanaro/javacheck/junit/Properties.java')
-rw-r--r-- | src/main/java/au/id/zancanaro/javacheck/junit/Properties.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/main/java/au/id/zancanaro/javacheck/junit/Properties.java b/src/main/java/au/id/zancanaro/javacheck/junit/Properties.java index c428edc..175cd6c 100644 --- a/src/main/java/au/id/zancanaro/javacheck/junit/Properties.java +++ b/src/main/java/au/id/zancanaro/javacheck/junit/Properties.java @@ -116,26 +116,30 @@ public class Properties extends BlockJUnit4ClassRunner { private ShrinkResult shrink(ShrinkTree<List<Object>> failed, Throwable originalEx) { // this array is a mutable container so the shutdown handler can see the new version ShrinkResult[] smallest = new ShrinkResult[]{ - new ShrinkResult(failed.getValue(), originalEx)}; + new ShrinkResult(failed.getValue(), originalEx, 0, 0)}; Thread shutdownHandler = makeShutdownHandler(smallest, originalEx); Runtime.getRuntime().addShutdownHook(shutdownHandler); + int depth = 0; + int visited = 0; Set<List<Object>> seenArgs = new HashSet<>(); Iterator<ShrinkTree<List<Object>>> trees = failed.getChildren().iterator(); while (trees.hasNext()) { ShrinkTree<List<Object>> tree = trees.next(); List<Object> value = tree.getValue(); - boolean haveSeen = seenArgs.add(Arrays.asList(value)); - if (haveSeen) { + boolean notSeen = seenArgs.add(Arrays.asList(value)); + if (notSeen) { + visited++; try { runTest(value.toArray()); } catch (AssumptionViolatedException ex) { // ignore, because it's not useful } catch (Throwable ex) { - smallest[0] = new ShrinkResult(tree.getValue(), ex); + smallest[0] = new ShrinkResult(tree.getValue(), ex, depth, visited); Iterator<ShrinkTree<List<Object>>> children = tree.getChildren().iterator(); if (children.hasNext()) { + depth++; trees = children; } else { break; |