commit 6a90e220dd2c122aef3732eb97d7ae95596fd540 Author: Dawid Weiss Date: Sat Mar 24 21:14:34 2012 +0000 LUCENE-3908: include test method even in a failure is caught in a non-test thread. git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1304923 13f79535-47bb-0310-9956-ffa450edef68 diff --git a/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java b/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java index 9b7700b..911882f 100644 --- a/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java +++ b/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestSeedFromUncaught.java @@ -55,6 +55,7 @@ public class TestSeedFromUncaught extends WithNestedTests { 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")); } } diff --git a/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java index 19cf45b..497a46a 100644 --- a/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java +++ b/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java @@ -304,7 +304,7 @@ public abstract class LuceneTestCase extends Assert { */ @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 extends Assert { 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 extends Assert { } catch (Throwable t) { failed(t, description); throw t; - } finally { - ending(description); } } }; @@ -593,16 +590,6 @@ public abstract class LuceneTestCase extends Assert { 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 extends Assert { /** * @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 extends Assert { // 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