tests: fix test again, this time using sneaky rethrower

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1307056 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael McCandless 2012-03-29 18:58:57 +00:00
parent 58502a5fec
commit ea611beacc
2 changed files with 49 additions and 2 deletions

View File

@ -35,6 +35,7 @@ import org.apache.lucene.util.AttributeImpl;
import org.apache.lucene.util.LuceneTestCase; import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.LineFileDocs; import org.apache.lucene.util.LineFileDocs;
import org.apache.lucene.util._TestUtil; import org.apache.lucene.util._TestUtil;
import org.apache.lucene.util.Rethrow;
/** /**
* Base class for all Lucene unit tests that use TokenStreams. * Base class for all Lucene unit tests that use TokenStreams.
@ -335,7 +336,7 @@ public abstract class BaseTokenStreamTestCase extends LuceneTestCase {
// to verify reproducability/reuse: hopefully this would catch thread hazards. // to verify reproducability/reuse: hopefully this would catch thread hazards.
checkRandomData(random, a, iterations, maxWordLength, random.nextBoolean(), simple); checkRandomData(random, a, iterations, maxWordLength, random.nextBoolean(), simple);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); Rethrow.rethrow(e);
} }
} }
}; };
@ -395,7 +396,7 @@ public abstract class BaseTokenStreamTestCase extends LuceneTestCase {
checkAnalysisConsistency(random, a, useCharFilter, text); checkAnalysisConsistency(random, a, useCharFilter, text);
} catch (Throwable t) { } catch (Throwable t) {
System.err.println("TEST FAIL: useCharFilter=" + useCharFilter + " text='" + text + "'"); System.err.println("TEST FAIL: useCharFilter=" + useCharFilter + " text='" + text + "'");
throw new RuntimeException(t); Rethrow.rethrow(t);
} }
} }
} }

View File

@ -0,0 +1,46 @@
package org.apache.lucene.util;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Sneaky: rethrowing checked exceptions as unchecked
* ones. Eh, it is sometimes useful...
*
* <p>Pulled from http://www.javapuzzlers.com (I
* think?).</p>
*/
public final class Rethrow {
/**
* Classy puzzler to rethrow any checked exception as an unchecked one.
*/
@SuppressWarnings("all")
private static class Rethrower<T extends Throwable> {
private void rethrow(Throwable t) throws T {
throw (T) t;
}
}
/**
* Rethrows <code>t</code> (identical object).
*/
public static void rethrow(Throwable t) {
new Rethrower<Error>().rethrow(t);
}
}