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/09 09:06:09 UTC
svn commit: r1298736 - in /lucene/dev/branches/branch_3x:
lucene/test-framework/src/java/org/apache/lucene/util/
solr/test-framework/src/java/org/apache/solr/
Author: dweiss
Date: Fri Mar 9 08:06:08 2012
New Revision: 1298736
URL: http://svn.apache.org/viewvc?rev=1298736&view=rev
Log:
Class rule to store the currently executing test class. Removed Solr's code that pulled this from the stack frames (which wasn't working because rules wrap the actual test code).
Added:
lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/StoreClassNameRule.java
Modified:
lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCaseRunner.java
lucene/dev/branches/branch_3x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
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=1298736&r1=1298735&r2=1298736&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 Fri Mar 9 08:06:08 2012
@@ -209,11 +209,9 @@ public abstract class LuceneTestCase ext
private static HashMap<String, String> restoreProperties = new HashMap<String,String>();
protected static Map<MockDirectoryWrapper,StackTraceElement[]> stores;
-
- /** @deprecated: until we fix no-fork problems in solr tests */
- @Deprecated
- static List<String> testClassesRun = new ArrayList<String>();
-
+
+ private static List<String> testClassesRun = new ArrayList<String>();
+
private static void initRandom() {
assert !random.initialized;
staticSeed = "random".equals(TEST_SEED) ? seedRand.nextLong() : ThreeLongs.fromString(TEST_SEED).l1;
@@ -224,11 +222,20 @@ public abstract class LuceneTestCase ext
@Deprecated
private static boolean icuTested = false;
+ /**
+ * Stores the currently class under test.
+ */
+ private static final StoreClassNameRule classNameRule = new StoreClassNameRule();
+
@ClassRule
- public static TestRule classRules = RuleChain.outerRule(new SystemPropertiesInvariantRule());
+ public static TestRule classRules = RuleChain
+ .outerRule(new SystemPropertiesInvariantRule())
+ .around(classNameRule);
@BeforeClass
public static void beforeClassLuceneTestCaseJ4() {
+ testClassesRun.add(getTestClass().getSimpleName());
+
initRandom();
tempDirs.clear();
stores = Collections.synchronizedMap(new IdentityHashMap<MockDirectoryWrapper,StackTraceElement[]>());
@@ -1416,6 +1423,13 @@ public abstract class LuceneTestCase ext
return sb.toString();
}
+ /**
+ * Return the current class being tested.
+ */
+ public static Class<?> getTestClass() {
+ return classNameRule.getTestClass();
+ }
+
// recorded seed: for beforeClass
private static long staticSeed;
// seed for individual test methods, changed in @before
Modified: lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCaseRunner.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCaseRunner.java?rev=1298736&r1=1298735&r2=1298736&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCaseRunner.java (original)
+++ lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCaseRunner.java Fri Mar 9 08:06:08 2012
@@ -61,7 +61,6 @@ public class LuceneTestCaseRunner extend
Random r = new Random(runnerSeed);
- LuceneTestCase.testClassesRun.add(getTestClass().getJavaClass().getSimpleName());
testMethods = new ArrayList<FrameworkMethod>();
for (Method m : getTestClass().getJavaClass().getMethods()) {
// check if the current test's class has methods annotated with @Ignore
Added: lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/StoreClassNameRule.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/StoreClassNameRule.java?rev=1298736&view=auto
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/StoreClassNameRule.java (added)
+++ lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/util/StoreClassNameRule.java Fri Mar 9 08:06:08 2012
@@ -0,0 +1,39 @@
+package org.apache.lucene.util;
+
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+public class StoreClassNameRule implements TestRule {
+ private volatile Class<?> testClass;
+
+ @Override
+ public Statement apply(final Statement s, final Description d) {
+ if (!d.isSuite()) {
+ throw new IllegalArgumentException("This is a @ClassRule (applies to suites only).");
+ }
+
+ return new Statement() {
+ @Override
+ public void evaluate() throws Throwable {
+ try {
+ testClass = d.getTestClass();
+ s.evaluate();
+ } finally {
+ testClass = null;
+ }
+ }
+ };
+ }
+
+ /**
+ * Returns the test class currently executing in this rule.
+ */
+ public Class<?> getTestClass() {
+ Class<?> clz = testClass;
+ if (clz == null) {
+ throw new RuntimeException("The rule is not currently executing.");
+ }
+ return clz;
+ }
+}
Modified: lucene/dev/branches/branch_3x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java?rev=1298736&r1=1298735&r2=1298736&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java (original)
+++ lucene/dev/branches/branch_3x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java Fri Mar 9 08:06:08 2012
@@ -179,20 +179,11 @@ public abstract class SolrTestCaseJ4 ext
}
protected static String getClassName() {
- StackTraceElement[] stack = new RuntimeException("WhoAmI").fillInStackTrace().getStackTrace();
- for (int i = stack.length-1; i>=0; i--) {
- StackTraceElement ste = stack[i];
- String cname = ste.getClassName();
- if (cname.indexOf(".lucene.")>=0 || cname.indexOf(".solr.")>=0) {
- return cname;
- }
- }
- return SolrTestCaseJ4.class.getName();
+ return getTestClass().getName();
}
protected static String getSimpleClassName() {
- String cname = getClassName();
- return cname.substring(cname.lastIndexOf('.')+1);
+ return getTestClass().getSimpleName();
}
protected static String configString;