mirror of https://github.com/apache/lucene.git
LUCENE-5059: Report -Dtests.method properly when Repeat annotation is used (strip augmentations).
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1499376 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
efc6826ed8
commit
d8ece524da
|
@ -0,0 +1,53 @@
|
|||
package org.apache.lucene.util.junitcompat;
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.JUnitCore;
|
||||
|
||||
import com.carrotsearch.randomizedtesting.annotations.Repeat;
|
||||
|
||||
/**
|
||||
* Test reproduce message is right with {@link Repeat} annotation.
|
||||
*/
|
||||
public class TestReproduceMessageWithRepeated extends WithNestedTests {
|
||||
public static class Nested extends AbstractNestedTest {
|
||||
@Test
|
||||
@Repeat(iterations = 10)
|
||||
public void testMe() {
|
||||
throw new RuntimeException("bad");
|
||||
}
|
||||
}
|
||||
|
||||
public TestReproduceMessageWithRepeated() {
|
||||
super(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRepeatedMessage() throws Exception {
|
||||
String syserr = runAndReturnSyserr();
|
||||
Assert.assertTrue(syserr.contains(" -Dtests.method=testMe "));
|
||||
}
|
||||
|
||||
private String runAndReturnSyserr() {
|
||||
JUnitCore.runClasses(Nested.class);
|
||||
String err = getSysErr();
|
||||
return err;
|
||||
}
|
||||
}
|
|
@ -88,12 +88,27 @@ public final class RunListenerPrintReproduceInfo extends RunListener {
|
|||
@Override
|
||||
public void testFinished(Description description) throws Exception {
|
||||
if (testFailed) {
|
||||
reportAdditionalFailureInfo(description.getMethodName());
|
||||
reportAdditionalFailureInfo(
|
||||
stripTestNameAugmentations(
|
||||
description.getMethodName()));
|
||||
}
|
||||
scope = LifecycleScope.SUITE;
|
||||
testFailed = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* The {@link Description} object in JUnit does not expose the actual test method,
|
||||
* instead it has the concept of a unique "name" of a test. To run the same method (tests)
|
||||
* repeatedly, randomizedtesting must make those "names" unique: it appends the current iteration
|
||||
* and seeds to the test method's name. We strip this information here.
|
||||
*/
|
||||
private String stripTestNameAugmentations(String methodName) {
|
||||
if (methodName != null) {
|
||||
methodName = methodName.replaceAll("\\s*\\{.+?\\}", "");
|
||||
}
|
||||
return methodName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testRunFinished(Result result) throws Exception {
|
||||
if (printDiagnosticsAfterClass || LuceneTestCase.VERBOSE) {
|
||||
|
|
Loading…
Reference in New Issue