You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2010/10/16 17:43:12 UTC
svn commit: r1023312 - in /lucene/dev/trunk:
lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/
lucene/src/test/org/apache/lucene/index/
lucene/src/test/org/apache/lucene/util/
modules/analysis/common/src/test/org/apache/lucene/analy...
Author: uschindler
Date: Sat Oct 16 15:43:11 2010
New Revision: 1023312
URL: http://svn.apache.org/viewvc?rev=1023312&view=rev
Log:
LUCENE-2708: when a test Assume fails, display information, improved one
Modified:
lucene/dev/trunk/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestQueryTemplateManager.java
lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestLazyProxSkipping.java
lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java
lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java
lucene/dev/trunk/solr/contrib/extraction/src/test/java/org/apache/solr/handler/ExtractingRequestHandlerTest.java
lucene/dev/trunk/solr/src/test/org/apache/solr/analysis/TestThaiWordFilterFactory.java
lucene/dev/trunk/solr/src/test/org/apache/solr/servlet/SolrRequestParserTest.java
Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestQueryTemplateManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestQueryTemplateManager.java?rev=1023312&r1=1023311&r2=1023312&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestQueryTemplateManager.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestQueryTemplateManager.java Sat Oct 16 15:43:11 2010
@@ -17,7 +17,7 @@ import org.apache.lucene.search.Query;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Constants;
import org.apache.lucene.util.LuceneTestCase;
-import org.junit.Assume;
+
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
@@ -75,7 +75,7 @@ public class TestQueryTemplateManager ex
// Sun 1.5 suffers from http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6240963
if (Constants.JAVA_VENDOR.startsWith("Sun") && Constants.JAVA_VERSION.startsWith("1.5")) {
String defLang = Locale.getDefault().getLanguage();
- Assume.assumeTrue(!defLang.equals("tr") && !defLang.equals("az"));
+ assumeFalse("Sun JRE 1.5 suffers from http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6240963 under Turkish locale", defLang.equals("tr") || defLang.equals("az"));
}
//Cache all the query templates we will be referring to.
QueryTemplateManager qtm=new QueryTemplateManager();
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestLazyProxSkipping.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestLazyProxSkipping.java?rev=1023312&r1=1023311&r2=1023312&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestLazyProxSkipping.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestLazyProxSkipping.java Sat Oct 16 15:43:11 2010
@@ -34,7 +34,6 @@ import org.apache.lucene.store.MockDirec
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.BytesRef;
-import static org.junit.Assume.*;
/**
* Tests lazy skipping on the proximity file.
@@ -121,7 +120,7 @@ public class TestLazyProxSkipping extend
}
public void testLazySkipping() throws IOException {
- assumeTrue(!CodecProvider.getDefaultCodec().equals("SimpleText"));
+ assumeFalse("This test cannot run with SimpleText codec", CodecProvider.getDefaultCodec().equals("SimpleText"));
// test whether only the minimum amount of seeks()
// are performed
performTest(5);
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java?rev=1023312&r1=1023311&r2=1023312&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java Sat Oct 16 15:43:11 2010
@@ -42,6 +42,7 @@ import org.apache.lucene.search.FieldCac
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.util.FieldCacheSanityChecker.Insanity;
+import org.junit.Assume;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
@@ -351,8 +352,16 @@ public abstract class LuceneTestCase ext
// org.junit.internal.AssumptionViolatedException in older releases
// org.junit.Assume.AssumptionViolatedException in recent ones
if (e.getClass().getName().endsWith("AssumptionViolatedException")) {
- System.err.println("NOTE: " + method.getName() + " Assume failed (ignored):");
- e.printStackTrace();
+ if (e.getCause() instanceof TestIgnoredException)
+ e = e.getCause();
+ System.err.print("NOTE: Assume failed in '" + method.getName() + "' (ignored):");
+ if (VERBOSE) {
+ System.err.println();
+ e.printStackTrace(System.err);
+ } else {
+ System.err.print(" ");
+ System.err.println(e.getMessage());
+ }
} else {
testsFailed = true;
reportAdditionalFailureInfo();
@@ -373,7 +382,7 @@ public abstract class LuceneTestCase ext
public void setUp() throws Exception {
seed = "random".equals(TEST_SEED) ? seedRand.nextLong() : TwoLongs.fromString(TEST_SEED).l2;
random.setSeed(seed);
- Assert.assertFalse("ensure your tearDown() calls super.tearDown()!!!", setup);
+ assertFalse("ensure your tearDown() calls super.tearDown()!!!", setup);
setup = true;
savedUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@@ -410,7 +419,7 @@ public abstract class LuceneTestCase ext
@After
public void tearDown() throws Exception {
- Assert.assertTrue("ensure your setUp() calls super.setUp()!!!", setup);
+ assertTrue("ensure your setUp() calls super.setUp()!!!", setup);
setup = false;
BooleanQuery.setMaxClauseCount(savedBoolMaxClauseCount);
try {
@@ -515,6 +524,49 @@ public abstract class LuceneTestCase ext
static public void assertEquals(String message, float expected, float actual) {
assertEquals(message, Float.valueOf(expected), Float.valueOf(actual));
}
+
+ // Replacement for Assume jUnit class, so we can add a message with explanation:
+
+ private static final class TestIgnoredException extends RuntimeException {
+ TestIgnoredException(String msg) {
+ super(msg);
+ }
+
+ TestIgnoredException(String msg, Throwable t) {
+ super(msg, t);
+ }
+
+ @Override
+ public String getMessage() {
+ StringBuilder sb = new StringBuilder(super.getMessage());
+ if (getCause() != null)
+ sb.append(" - ").append(getCause());
+ return sb.toString();
+ }
+
+ // only this one is called by our code, exception is not used outside this class:
+ @Override
+ public void printStackTrace(PrintStream s) {
+ if (getCause() != null) {
+ s.println(super.toString() + " - Caused by:");
+ getCause().printStackTrace(s);
+ } else {
+ super.printStackTrace(s);
+ }
+ }
+ }
+
+ public static void assumeTrue(String msg, boolean b) {
+ Assume.assumeNoException(b ? null : new TestIgnoredException(msg));
+ }
+
+ public static void assumeFalse(String msg, boolean b) {
+ assumeTrue(msg, !b);
+ }
+
+ public static void assumeNoException(String msg, Exception e) {
+ Assume.assumeNoException(e == null ? null : new TestIgnoredException(msg, e));
+ }
/**
* Convinience method for logging an iterator.
@@ -792,16 +844,14 @@ public abstract class LuceneTestCase ext
protected List<FrameworkMethod> computeTestMethods() {
if (testMethods != null)
return testMethods;
- // check if the current test's class has methods annotated with @Ignore
- final Class<?> clazz = getTestClass().getJavaClass();
- for (Method m : clazz.getMethods()) {
- Ignore ignored = m.getAnnotation(Ignore.class);
- if (ignored != null) {
- System.err.println("NOTE: Ignoring test method '" + m.getName() + "' " + ignored.value());
- }
- }
testMethods = getTestClass().getAnnotatedMethods(Test.class);
for (Method m : getTestClass().getJavaClass().getMethods()) {
+ // check if the current test's class has methods annotated with @Ignore
+ final Ignore ignored = m.getAnnotation(Ignore.class);
+ if (ignored != null) {
+ System.err.println("NOTE: Ignoring test method '" + m.getName() + "': " + ignored.value());
+ }
+ // add methods starting with "test"
final int mod = m.getModifiers();
if (m.getName().startsWith("test") &&
m.getAnnotation(Test.class) == null &&
Modified: lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java?rev=1023312&r1=1023311&r2=1023312&view=diff
==============================================================================
--- lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java (original)
+++ lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java Sat Oct 16 15:43:11 2010
@@ -19,7 +19,6 @@ package org.apache.lucene.analysis.th;
import org.apache.lucene.analysis.BaseTokenStreamTestCase;
import org.apache.lucene.util.Version;
-import org.junit.Assume;
/**
* Test case for ThaiAnalyzer, modified from TestFrenchAnalyzer
@@ -33,7 +32,7 @@ public class TestThaiAnalyzer extends Ba
* testcase for offsets
*/
public void testOffsets() throws Exception {
- Assume.assumeTrue(ThaiWordFilter.DBBI_AVAILABLE);
+ assumeTrue("JRE does not support Thai dictionary-based BreakIterator", ThaiWordFilter.DBBI_AVAILABLE);
assertAnalyzesTo(new ThaiAnalyzer(TEST_VERSION_CURRENT), "à¸à¸²à¸£à¸à¸µà¹à¹à¸à¹à¸à¹à¸à¸à¹à¸ªà¸à¸à¸§à¹à¸²à¸à¸²à¸à¸à¸µ",
new String[] { "à¸à¸²à¸£", "à¸à¸µà¹", "à¹à¸à¹", "à¸à¹à¸à¸", "à¹à¸ªà¸à¸", "วà¹à¸²", "à¸à¸²à¸", "à¸à¸µ" },
new int[] { 0, 3, 6, 9, 13, 17, 20, 23 },
@@ -41,6 +40,7 @@ public class TestThaiAnalyzer extends Ba
}
public void testTokenType() throws Exception {
+ assumeTrue("JRE does not support Thai dictionary-based BreakIterator", ThaiWordFilter.DBBI_AVAILABLE);
assertAnalyzesTo(new ThaiAnalyzer(TEST_VERSION_CURRENT), "à¸à¸²à¸£à¸à¸µà¹à¹à¸à¹à¸à¹à¸à¸à¹à¸ªà¸à¸à¸§à¹à¸²à¸à¸²à¸à¸à¸µ à¹à¹à¹",
new String[] { "à¸à¸²à¸£", "à¸à¸µà¹", "à¹à¸à¹", "à¸à¹à¸à¸", "à¹à¸ªà¸à¸", "วà¹à¸²", "à¸à¸²à¸", "à¸à¸µ", "à¹à¹à¹" },
new String[] { "<SOUTHEAST_ASIAN>", "<SOUTHEAST_ASIAN>",
@@ -56,7 +56,7 @@ public class TestThaiAnalyzer extends Ba
*/
@Deprecated
public void testBuggyTokenType30() throws Exception {
- Assume.assumeTrue(ThaiWordFilter.DBBI_AVAILABLE);
+ assumeTrue("JRE does not support Thai dictionary-based BreakIterator", ThaiWordFilter.DBBI_AVAILABLE);
assertAnalyzesTo(new ThaiAnalyzer(Version.LUCENE_30), "à¸à¸²à¸£à¸à¸µà¹à¹à¸à¹à¸à¹à¸à¸à¹à¸ªà¸à¸à¸§à¹à¸²à¸à¸²à¸à¸à¸µ à¹à¹à¹",
new String[] { "à¸à¸²à¸£", "à¸à¸µà¹", "à¹à¸à¹", "à¸à¹à¸à¸", "à¹à¸ªà¸à¸", "วà¹à¸²", "à¸à¸²à¸", "à¸à¸µ", "à¹à¹à¹" },
new String[] { "<ALPHANUM>", "<ALPHANUM>", "<ALPHANUM>",
@@ -67,7 +67,7 @@ public class TestThaiAnalyzer extends Ba
/** @deprecated testing backwards behavior */
@Deprecated
public void testAnalyzer30() throws Exception {
- Assume.assumeTrue(ThaiWordFilter.DBBI_AVAILABLE);
+ assumeTrue("JRE does not support Thai dictionary-based BreakIterator", ThaiWordFilter.DBBI_AVAILABLE);
ThaiAnalyzer analyzer = new ThaiAnalyzer(Version.LUCENE_30);
assertAnalyzesTo(analyzer, "", new String[] {});
@@ -93,7 +93,7 @@ public class TestThaiAnalyzer extends Ba
* Test that position increments are adjusted correctly for stopwords.
*/
public void testPositionIncrements() throws Exception {
- Assume.assumeTrue(ThaiWordFilter.DBBI_AVAILABLE);
+ assumeTrue("JRE does not support Thai dictionary-based BreakIterator", ThaiWordFilter.DBBI_AVAILABLE);
ThaiAnalyzer analyzer = new ThaiAnalyzer(TEST_VERSION_CURRENT);
assertAnalyzesTo(new ThaiAnalyzer(TEST_VERSION_CURRENT), "à¸à¸²à¸£à¸à¸µà¹à¹à¸à¹à¸à¹à¸à¸ the à¹à¸ªà¸à¸à¸§à¹à¸²à¸à¸²à¸à¸à¸µ",
@@ -111,7 +111,7 @@ public class TestThaiAnalyzer extends Ba
}
public void testReusableTokenStream() throws Exception {
- Assume.assumeTrue(ThaiWordFilter.DBBI_AVAILABLE);
+ assumeTrue("JRE does not support Thai dictionary-based BreakIterator", ThaiWordFilter.DBBI_AVAILABLE);
ThaiAnalyzer analyzer = new ThaiAnalyzer(TEST_VERSION_CURRENT);
assertAnalyzesToReuse(analyzer, "", new String[] {});
@@ -129,6 +129,7 @@ public class TestThaiAnalyzer extends Ba
/** @deprecated, for version back compat */
@Deprecated
public void testReusableTokenStream30() throws Exception {
+ assumeTrue("JRE does not support Thai dictionary-based BreakIterator", ThaiWordFilter.DBBI_AVAILABLE);
ThaiAnalyzer analyzer = new ThaiAnalyzer(Version.LUCENE_30);
assertAnalyzesToReuse(analyzer, "", new String[] {});
Modified: lucene/dev/trunk/solr/contrib/extraction/src/test/java/org/apache/solr/handler/ExtractingRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/extraction/src/test/java/org/apache/solr/handler/ExtractingRequestHandlerTest.java?rev=1023312&r1=1023311&r2=1023312&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/extraction/src/test/java/org/apache/solr/handler/ExtractingRequestHandlerTest.java (original)
+++ lucene/dev/trunk/solr/contrib/extraction/src/test/java/org/apache/solr/handler/ExtractingRequestHandlerTest.java Sat Oct 16 15:43:11 2010
@@ -26,7 +26,7 @@ import org.apache.solr.common.SolrExcept
import org.apache.solr.handler.extraction.ExtractingParams;
import org.apache.solr.handler.extraction.ExtractingRequestHandler;
import org.apache.solr.handler.extraction.ExtractingDocumentLoader;
-import org.junit.Assume;
+
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -60,7 +60,7 @@ public class ExtractingRequestHandlerTes
public void testExtraction() throws Exception {
// broken for turkish: https://issues.apache.org/jira/browse/SOLR-2088
String defLang = Locale.getDefault().getLanguage();
- Assume.assumeTrue(!defLang.equals("tr") && !defLang.equals("az"));
+ assumeFalse("Known bugs under Turkish locale: https://issues.apache.org/jira/browse/SOLR-2088", defLang.equals("tr") || defLang.equals("az"));
ExtractingRequestHandler handler = (ExtractingRequestHandler) h.getCore().getRequestHandler("/update/extract");
assertTrue("handler is null and it shouldn't be", handler != null);
loadLocal("solr-word.pdf", "fmap.created", "extractedDate", "fmap.producer", "extractedProducer",
Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/analysis/TestThaiWordFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/analysis/TestThaiWordFilterFactory.java?rev=1023312&r1=1023311&r2=1023312&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/analysis/TestThaiWordFilterFactory.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/analysis/TestThaiWordFilterFactory.java Sat Oct 16 15:43:11 2010
@@ -24,7 +24,6 @@ import org.apache.lucene.analysis.TokenS
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.core.WhitespaceTokenizer;
import org.apache.lucene.analysis.th.ThaiWordFilter;
-import org.junit.Assume;
/**
* Simple tests to ensure the Thai word filter factory is working.
@@ -34,7 +33,7 @@ public class TestThaiWordFilterFactory e
* Ensure the filter actually decomposes text.
*/
public void testWordBreak() throws Exception {
- Assume.assumeTrue(ThaiWordFilter.DBBI_AVAILABLE);
+ assumeTrue("JRE does not support Thai dictionary-based BreakIterator", ThaiWordFilter.DBBI_AVAILABLE);
Reader reader = new StringReader("à¸à¸²à¸£à¸à¸µà¹à¹à¸à¹à¸à¹à¸à¸à¹à¸ªà¸à¸à¸§à¹à¸²à¸à¸²à¸à¸à¸µ");
Tokenizer tokenizer = new WhitespaceTokenizer(DEFAULT_VERSION, reader);
ThaiWordFilterFactory factory = new ThaiWordFilterFactory();
Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/servlet/SolrRequestParserTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/servlet/SolrRequestParserTest.java?rev=1023312&r1=1023311&r2=1023312&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/servlet/SolrRequestParserTest.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/servlet/SolrRequestParserTest.java Sat Oct 16 15:43:11 2010
@@ -39,7 +39,6 @@ import org.apache.solr.common.params.Sol
import org.apache.solr.common.util.ContentStream;
import org.apache.solr.core.SolrCore;
import org.junit.AfterClass;
-import org.junit.Assume;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -120,8 +119,7 @@ public class SolrRequestParserTest exten
txt = IOUtils.toString( connection.getInputStream());
}
catch( Exception ex ) {
- System.out.println( "this test only works if you have a network connection." );
- Assume.assumeNoException(ex);
+ assumeNoException("Unable to connect to " + url + " to run the test.", ex);
return;
}