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);