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/05/15 23:47:27 UTC
svn commit: r1338911 - in /lucene/dev/trunk/lucene:
core/src/test/org/apache/lucene/util/junitcompat/
test-framework/src/java/org/apache/lucene/util/
Author: dweiss
Date: Tue May 15 21:47:27 2012
New Revision: 1338911
URL: http://svn.apache.org/viewvc?rev=1338911&view=rev
Log:
LUCENE-4047: Rewrote ClassValidators as suite level test rules. This adds more stack entries but will work with intellij idea's test runner.
Added:
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleAssertionsRequired.java
- copied, changed from r1338877, lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateAssertionsRequired.java
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleNoInstanceHooksOverrides.java
- copied, changed from r1338877, lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateNoInstanceHooksOverrides.java
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleNoStaticHooksShadowing.java
- copied, changed from r1338877, lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateNoStaticHooksShadowing.java
Removed:
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateAssertionsRequired.java
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateNoInstanceHooksOverrides.java
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateNoStaticHooksShadowing.java
Modified:
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestBeforeAfterOverrides.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/TestBeforeAfterOverrides.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestBeforeAfterOverrides.java?rev=1338911&r1=1338910&r2=1338911&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestBeforeAfterOverrides.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestBeforeAfterOverrides.java Tue May 15 21:47:27 2012
@@ -32,6 +32,8 @@ public class TestBeforeAfterOverrides ex
public static class Before1 extends WithNestedTests.AbstractNestedTest {
@Before
public void before() {}
+
+ public void testEmpty() {}
}
public static class Before2 extends Before1 {}
public static class Before3 extends Before2 {
@@ -42,6 +44,8 @@ public class TestBeforeAfterOverrides ex
public static class After1 extends WithNestedTests.AbstractNestedTest {
@After
public void after() {}
+
+ public void testEmpty() {}
}
public static class After2 extends Before1 {}
public static class After3 extends Before2 {
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=1338911&r1=1338910&r2=1338911&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 Tue May 15 21:47:27 2012
@@ -106,11 +106,6 @@ import com.carrotsearch.randomizedtestin
LuceneJUnit3MethodProvider.class,
JUnit4MethodProvider.class
})
-@Validators({
- ValidateAssertionsRequired.class,
- ValidateNoStaticHooksShadowing.class,
- ValidateNoInstanceHooksOverrides.class
-})
@Listeners({
RunListenerPrintReproduceInfo.class
})
@@ -297,6 +292,9 @@ public abstract class LuceneTestCase ext
@ClassRule
public static TestRule classRules = RuleChain
.outerRule(suiteFailureMarker = new TestRuleMarkFailure())
+ .around(new TestRuleAssertionsRequired())
+ .around(new TestRuleNoStaticHooksShadowing())
+ .around(new TestRuleNoInstanceHooksOverrides())
.around(new SystemPropertiesInvariantRule(IGNORED_INVARIANT_PROPERTIES))
.around(new TestRuleIcuHack())
.around(classNameRule = new TestRuleStoreClassName())
Copied: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleAssertionsRequired.java (from r1338877, lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateAssertionsRequired.java)
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleAssertionsRequired.java?p2=lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleAssertionsRequired.java&p1=lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateAssertionsRequired.java&r1=1338877&r2=1338911&rev=1338911&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateAssertionsRequired.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleAssertionsRequired.java Tue May 15 21:47:27 2012
@@ -17,17 +17,32 @@ package org.apache.lucene.util;
* limitations under the License.
*/
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
import com.carrotsearch.randomizedtesting.ClassValidator;
/**
* Require assertions for Lucene/Solr packages.
*/
-public class ValidateAssertionsRequired implements ClassValidator {
+public class TestRuleAssertionsRequired implements TestRule, ClassValidator {
+ @Override
+ public Statement apply(final Statement base, final Description description) {
+ return new Statement() {
+ @Override
+ public void evaluate() throws Throwable {
+ validate(description.getTestClass());
+ base.evaluate();
+ }
+ };
+ }
+
@Override
public void validate(Class<?> clazz) throws Throwable {
try {
assert false;
- throw new RuntimeException("Enable assertions globally (-ea) or for Solr/Lucene subpackages only.");
+ throw new Exception("Test class requires assertions, enable assertions globally (-ea) or for Solr/Lucene subpackages only.");
} catch (AssertionError e) {
// Ok, enabled.
}
Copied: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleNoInstanceHooksOverrides.java (from r1338877, lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateNoInstanceHooksOverrides.java)
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleNoInstanceHooksOverrides.java?p2=lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleNoInstanceHooksOverrides.java&p1=lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateNoInstanceHooksOverrides.java&r1=1338877&r2=1338911&rev=1338911&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateNoInstanceHooksOverrides.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleNoInstanceHooksOverrides.java Tue May 15 21:47:27 2012
@@ -17,7 +17,10 @@ package org.apache.lucene.util;
* limitations under the License.
*/
-import static com.carrotsearch.randomizedtesting.MethodCollector.*;
+import static com.carrotsearch.randomizedtesting.MethodCollector.allDeclaredMethods;
+import static com.carrotsearch.randomizedtesting.MethodCollector.annotatedWith;
+import static com.carrotsearch.randomizedtesting.MethodCollector.flatten;
+import static com.carrotsearch.randomizedtesting.MethodCollector.removeOverrides;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
@@ -29,6 +32,9 @@ import java.util.Set;
import org.junit.After;
import org.junit.Before;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
import com.carrotsearch.randomizedtesting.ClassValidator;
@@ -37,7 +43,18 @@ import com.carrotsearch.randomizedtestin
* likely a user error and will result in superclass methods not being called
* (requires manual chaining).
*/
-public class ValidateNoInstanceHooksOverrides implements ClassValidator {
+public class TestRuleNoInstanceHooksOverrides implements TestRule, ClassValidator {
+ @Override
+ public Statement apply(final Statement base, final Description description) {
+ return new Statement() {
+ @Override
+ public void evaluate() throws Throwable {
+ validate(description.getTestClass());
+ base.evaluate();
+ }
+ };
+ }
+
@Override
public void validate(Class<?> clazz) throws Throwable {
List<List<Method>> all = allDeclaredMethods(clazz);
Copied: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleNoStaticHooksShadowing.java (from r1338877, lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateNoStaticHooksShadowing.java)
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleNoStaticHooksShadowing.java?p2=lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleNoStaticHooksShadowing.java&p1=lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateNoStaticHooksShadowing.java&r1=1338877&r2=1338911&rev=1338911&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/ValidateNoStaticHooksShadowing.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleNoStaticHooksShadowing.java Tue May 15 21:47:27 2012
@@ -31,6 +31,9 @@ import java.util.Set;
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
import com.carrotsearch.randomizedtesting.ClassValidator;
@@ -38,7 +41,19 @@ import com.carrotsearch.randomizedtestin
* Don't allow shadowing of {@link BeforeClass} or {@link AfterClass} hooks
* as it is very likely a user error and will prevent execution of shadowed hooks.
*/
-public class ValidateNoStaticHooksShadowing implements ClassValidator {
+public class TestRuleNoStaticHooksShadowing implements TestRule, ClassValidator {
+
+ @Override
+ public Statement apply(final Statement base, final Description description) {
+ return new Statement() {
+ @Override
+ public void evaluate() throws Throwable {
+ validate(description.getTestClass());
+ base.evaluate();
+ }
+ };
+ }
+
@Override
public void validate(Class<?> clazz) throws Throwable {
List<List<Method>> all = allDeclaredMethods(clazz);