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:21:19 UTC

svn commit: r1304927 - in /lucene/dev/branches/branch_3x/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:21:18 2012
New Revision: 1304927

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

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

Modified: lucene/dev/branches/branch_3x/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java?rev=1304927&r1=1304926&r2=1304927&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java (original)
+++ lucene/dev/branches/branch_3x/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java Sat Mar 24 21:21:18 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/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java?rev=1304927&r1=1304926&r2=1304927&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java Sat Mar 24 21:21:18 2012
@@ -250,7 +250,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))
@@ -453,7 +453,6 @@ public abstract class LuceneTestCase ext
       return new Statement() {
         @Override
         public void evaluate() throws Throwable {
-          starting(description);
           try {
             base.evaluate();
           } catch (AssumptionViolatedException e) {
@@ -462,8 +461,6 @@ public abstract class LuceneTestCase ext
           } catch (Throwable t) {
             failed(t, description);
             throw t;
-          } finally {
-            ending(description);
           }
         }
       };
@@ -485,16 +482,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;
-    }
   };
 
   /** 
@@ -506,16 +493,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 {
-            LuceneTestCase.this.testCaseThread = Thread.currentThread();
+            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;
           }
         }
       };
@@ -1380,9 +1374,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