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/03/24 22:14:34 UTC

svn commit: r1304923 - in /lucene/dev/trunk/lucene: core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java

Author: dweiss
Date: Sat Mar 24 21:14:34 2012
New Revision: 1304923

URL: http://svn.apache.org/viewvc?rev=1304923&view=rev
Log:
LUCENE-3908: include test method even in a failure is caught in a non-test thread.

Modified:
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java
    lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java?rev=1304923&r1=1304922&r2=1304923&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java Sat Mar 24 21:14:34 2012
@@ -55,6 +55,7 @@ public class TestSeedFromUncaught extend
     Assert.assertEquals(1, result.getFailureCount());
     String consoleOut = super.getSysErr() + "\n\n" + super.getSysOut();
     Assert.assertTrue(consoleOut.contains("-Dtests.seed="));
+    Assert.assertTrue(consoleOut.contains("-Dtestmethod=testFoo"));
     Assert.assertTrue(consoleOut.contains("foobar"));
   }
 }

Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java?rev=1304923&r1=1304922&r2=1304923&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java Sat Mar 24 21:14:34 2012
@@ -304,7 +304,7 @@ public abstract class LuceneTestCase ext
    */
   @Rule
   public final TestRule ruleChain = RuleChain
-    .outerRule(new RememberThreadRule())
+    .outerRule(new SaveThreadAndTestNameRule())
     .around(new UncaughtExceptionsRule(this))
     .around(new TestResultInterceptorRule())
     .around(new SystemPropertiesInvariantRule(ignoredInvariantProperties))
@@ -561,7 +561,6 @@ public abstract class LuceneTestCase ext
       return new Statement() {
         @Override
         public void evaluate() throws Throwable {
-          starting(description);
           try {
             base.evaluate();
           } catch (AssumptionViolatedException e) {
@@ -570,8 +569,6 @@ public abstract class LuceneTestCase ext
           } catch (Throwable t) {
             failed(t, description);
             throw t;
-          } finally {
-            ending(description);
           }
         }
       };
@@ -593,16 +590,6 @@ public abstract class LuceneTestCase ext
       reportAdditionalFailureInfo();
       assert !(e instanceof AssumptionViolatedException);
     }
-
-    private void starting(Description description) {
-      // set current method name for logging
-      LuceneTestCase.this.name = description.getMethodName();
-    }
-
-    private void ending(Description description) {
-      // clear the current method name.
-      LuceneTestCase.this.name = null;
-    }
   };
 
   /** 
@@ -614,21 +601,23 @@ public abstract class LuceneTestCase ext
   /** 
    * @see LuceneTestCase#testCaseThread 
    */
-  private class RememberThreadRule implements TestRule {
+  private class SaveThreadAndTestNameRule implements TestRule {
     private String previousName;
 
     @Override
-    public Statement apply(final Statement base, Description description) {
+    public Statement apply(final Statement base, final Description description) {
       return new Statement() {
         public void evaluate() throws Throwable {
           try {
             Thread current = Thread.currentThread();
             previousName = current.getName();
             LuceneTestCase.this.testCaseThread = current;
+            LuceneTestCase.this.name = description.getMethodName();
             base.evaluate();
           } finally {
             LuceneTestCase.this.testCaseThread.setName(previousName);
             LuceneTestCase.this.testCaseThread = null;
+            LuceneTestCase.this.name = null;
           }
         }
       };
@@ -1497,9 +1486,16 @@ public abstract class LuceneTestCase ext
   
   // We get here from InterceptTestCaseEvents on the 'failed' event....
   public void reportAdditionalFailureInfo() {
-    System.err.println("NOTE: reproduce with: ant test -Dtestcase=" + getClass().getSimpleName()
-        + " -Dtestmethod=" + getName() + " -Dtests.seed=" + new ThreeLongs(staticSeed, seed, LuceneTestCaseRunner.runnerSeed)
-        + reproduceWithExtraParams());
+    StringBuilder b = new StringBuilder();
+    b.append("NOTE: reproduce with: ant test -Dtestcase=")
+     .append(getClass().getSimpleName());
+    if (getName() != null) {
+      b.append(" -Dtestmethod=").append(getName());
+    }
+    b.append(" -Dtests.seed=")
+     .append(new ThreeLongs(staticSeed, seed, LuceneTestCaseRunner.runnerSeed))
+     .append(reproduceWithExtraParams());
+    System.err.println(b.toString());
   }
 
   // extra params that were overridden needed to reproduce the command