You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2012/08/23 08:58:21 UTC

svn commit: r1376391 - /lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/TestMaxFailuresRule.java

Author: dweiss
Date: Thu Aug 23 06:58:21 2012
New Revision: 1376391

URL: http://svn.apache.org/viewvc?rev=1376391&view=rev
Log:
Correcting the test for the pessimistic random seed.

Modified:
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/TestMaxFailuresRule.java

Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/TestMaxFailuresRule.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/TestMaxFailuresRule.java?rev=1376391&r1=1376390&r2=1376391&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/TestMaxFailuresRule.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/TestMaxFailuresRule.java Thu Aug 23 06:58:21 2012
@@ -19,9 +19,9 @@ package org.apache.lucene.util;
 
 import org.apache.lucene.util.junitcompat.WithNestedTests;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.Description;
 import org.junit.runner.JUnitCore;
 import org.junit.runner.Result;
 import org.junit.runner.notification.Failure;
@@ -45,7 +45,7 @@ public class TestMaxFailuresRule extends
   }
 
   public static class Nested extends WithNestedTests.AbstractNestedTest {
-    @Repeat(iterations = 100)
+    @Repeat(iterations = 500)
     public void testFailSometimes() {
       assertFalse(random().nextInt(5) == 0);
     }
@@ -61,22 +61,40 @@ public class TestMaxFailuresRule extends
       LuceneTestCase.ignoreAfterMaxFailures.failuresSoFar = 0;
 
       JUnitCore core = new JUnitCore();
-      final int [] assumptions = new int [1];
+      final StringBuilder results = new StringBuilder();
       core.addListener(new RunListener() {
+        char lastTest;
+
+        @Override
+        public void testStarted(Description description) throws Exception {
+          lastTest = 'S'; // success.
+        }
+
         @Override
         public void testAssumptionFailure(Failure failure) {
-          assumptions[0]++; 
+          lastTest = 'A'; // assumption failure.
+        }
+
+        @Override
+        public void testFailure(Failure failure) throws Exception {
+          lastTest = 'F'; // failure
+        }
+
+        @Override
+        public void testFinished(Description description) throws Exception {
+          results.append(lastTest);
         }
       });
 
       Result result = core.run(Nested.class);
-      Assert.assertEquals(100, result.getRunCount());
+      Assert.assertEquals(500, result.getRunCount());
       Assert.assertEquals(0, result.getIgnoreCount());
       Assert.assertEquals(2, result.getFailureCount());
 
-      // JUnit doesn't pass back the number of successful tests, just make sure
-      // we did have enough assumption-failures.
-      Assert.assertTrue(assumptions[0] > 50);
+      // Make sure we had exactly two failures followed by assumption-failures
+      // resulting from ignored tests.
+      Assert.assertTrue(results.toString(), 
+          results.toString().matches("(S*F){2}A+"));
     } finally {
       LuceneTestCase.ignoreAfterMaxFailures.maxFailures = maxFailures;
       LuceneTestCase.ignoreAfterMaxFailures.failuresSoFar = failuresSoFar;