Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,13 @@ public JUnit3IdeaTestRunner() {
super(DeafStream.DEAF_PRINT_STREAM);
}

@Override
public void createListeners(ArrayList listeners, int count) {
myTestsListener = new SMTestListener();
myListeners = listeners;
}

@Override
public int startRunnerWithArgs(String[] args, String name, int count, boolean sendTree) {
setPrinter(new MockResultPrinter());
try {
Expand All @@ -69,55 +71,66 @@ public int startRunnerWithArgs(String[] args, String name, int count, boolean se
}
}

@Override
public void clearStatus() {
super.clearStatus();
}

@Override
public void runFailed(String message) {
super.runFailed(message);
}

@Override
public Object getTestToStart(String[] args, String name) {
return TestRunnerUtil.getTestSuite(this, args);
}

@Override
public List getChildTests(Object description) {
return getTestCasesOf((Test)description);
return getTestCasesOf((Test) description);
}

@Override
public String getTestClassName(Object child) {
return child instanceof TestSuite ? ((TestSuite)child).getName() : child.getClass().getName();
return child instanceof TestSuite ? ((TestSuite) child).getName() : child.getClass().getName();
}

@Override
public String getStartDescription(Object child) {
final Test test = (Test)child;
return test instanceof TestCase
? test.getClass().getName() + "," + ((TestCase)test).getName()
: test.toString();
final Test test = (Test) child;
return test instanceof TestCase
? test.getClass().getName() + "," + ((TestCase) test).getName()
: test.toString();
}

@Override
protected TestResult createTestResult() {
TestResult testResult = super.createTestResult();
testResult.addListener(myTestsListener);
try {
for (int i = 0; i < myListeners.size(); i++) {
final IDEAJUnitListener junitListener = (IDEAJUnitListener)Class.forName((String)myListeners.get(i)).newInstance();
final IDEAJUnitListener junitListener = (IDEAJUnitListener) Class.forName((String) myListeners.get(i)).newInstance();
testResult.addListener(new TestListener() {
@Override
public void addError(Test test, Throwable t) {
}

@Override
public void addFailure(Test test, AssertionFailedError t) {
}

@Override
public void endTest(Test test) {
if (test instanceof TestCase) {
junitListener.testFinished(test.getClass().getName(), ((TestCase)test).getName());
junitListener.testFinished(test.getClass().getName(), ((TestCase) test).getName());
}
}

@Override
public void startTest(Test test) {
if (test instanceof TestCase) {
junitListener.testStarted(test.getClass().getName(), ((TestCase)test).getName());
junitListener.testStarted(test.getClass().getName(), ((TestCase) test).getName());
}
}
});
Expand All @@ -129,6 +142,7 @@ public void startTest(Test test) {
return testResult;
}

@Override
public TestResult doRun(Test suite, boolean wait) { //todo
final TestResult testResult = super.doRun(suite, wait);
myTestsListener.finishSuite();
Expand All @@ -139,12 +153,12 @@ public TestResult doRun(Test suite, boolean wait) { //todo
static Vector getTestCasesOf(Test test) {
Vector testCases = new Vector();
if (test instanceof TestRunnerUtil.SuiteMethodWrapper) {
test = ((TestRunnerUtil.SuiteMethodWrapper)test).getSuite();
test = ((TestRunnerUtil.SuiteMethodWrapper) test).getSuite();
}
if (test instanceof TestSuite) {
for (Enumeration each = ((TestSuite)test).tests(); each.hasMoreElements(); ) {
for (Enumeration each = ((TestSuite) test).tests(); each.hasMoreElements(); ) {
Object childTest = each.nextElement();
if (childTest instanceof TestSuite && !((TestSuite)childTest).tests().hasMoreElements()) {
if (childTest instanceof TestSuite && !((TestSuite) childTest).tests().hasMoreElements()) {
continue;
}
testCases.addElement(childTest);
Expand All @@ -163,6 +177,7 @@ private static class SMTestListener implements TestListener {
private String myClassName;
private long myCurrentTestStart;

@Override
public void addError(Test test, Throwable e) {
testFailure(e, MapSerializerUtil.TEST_FAILED, getMethodName(test));
}
Expand All @@ -178,7 +193,7 @@ private void testFailure(Throwable failure, String messageName, String methodNam
final String trace = getTrace(failure);
ComparisonFailureData notification = null;
if (failure instanceof FileComparisonFailure) {
FileComparisonFailure comparisonFailure = (FileComparisonFailure)failure;
FileComparisonFailure comparisonFailure = (FileComparisonFailure) failure;
notification = new ComparisonFailureData(comparisonFailure.getExpected(), comparisonFailure.getActual(),
comparisonFailure.getFilePath(), comparisonFailure.getActualFilePath()
);
Expand Down Expand Up @@ -224,16 +239,19 @@ private static String getClassName(Test test) {
: null;
}

@Override
public void addFailure(Test test, AssertionFailedError e) {
addError(test, e);
}

@Override
public void endTest(Test test) {
final long duration = System.currentTimeMillis() - myCurrentTestStart;
System.out.println("\n##teamcity[testFinished name=\'" + escapeName(getMethodName(test)) +
(duration > 0 ? "\' duration=\'" + Long.toString(duration) : "") + "\']");
}

@Override
public void startTest(Test test) {
myCurrentTestStart = System.currentTimeMillis();
final String className = getClassName(test);
Expand All @@ -242,13 +260,13 @@ public void startTest(Test test) {
myClassName = className;
System.out.println(
"##teamcity[testSuiteStarted name =\'" + escapeName(myClassName) +
"\' locationHint=\'java:suite://" + escapeName(className) + "\']"
"\' locationHint=\'java:suite://" + escapeName(className) + "\']"
);
}
final String methodName = getMethodName(test);
System.out.println(
"##teamcity[testStarted name=\'" + escapeName(methodName) +
"\' locationHint=\'java:test://" + escapeName(className + "." + methodName) + "\']"
"\' locationHint=\'java:test://" + escapeName(className + "." + methodName) + "\']"
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@ public String getMessage() {
return myMessage;
}

@Override
protected void runTest() throws Throwable {
try {
//noinspection Since15
Expand All @@ -282,10 +283,12 @@ public String getClassName() {
return myClassName;
}

@Override
public int countTestCases() {
return mySuite.countTestCases();
}

@Override
public void run(TestResult result) {
mySuite.run(result);
}
Expand Down
28 changes: 13 additions & 15 deletions junit-rt/src/main/java/com/intellij/junit4/IdeaSuite.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.intellij.junit4;

import junit.framework.Test;
Expand Down Expand Up @@ -44,15 +43,15 @@ public IdeaSuite(final RunnerBuilder builder, Class[] classes, String name) thro
myName = name;
}

@Override
public Description getDescription() {
Description description = Description.createSuiteDescription(myName, getTestClass().getAnnotations());
try {
final Method getFilteredChildrenMethod = ParentRunner.class.getDeclaredMethod("getFilteredChildren", new Class[0]);
getFilteredChildrenMethod.setAccessible(true);
Collection filteredChildren = (Collection)getFilteredChildrenMethod.invoke(this);
for (Iterator iterator = filteredChildren.iterator(); iterator.hasNext(); ) {
Object child = iterator.next();
description.addChild(describeChild((Runner)child));
for (Object child : filteredChildren) {
description.addChild(describeChild((Runner) child));
}
}
catch (Exception e) {
Expand All @@ -61,24 +60,25 @@ public Description getDescription() {
return description;
}

@Override
protected Description describeChild(Runner child) {
final Description superDescription = super.describeChild(child);
if (child instanceof ClassAwareSuiteMethod) {
final Description description = Description.createSuiteDescription(((ClassAwareSuiteMethod)child).getKlass());
ArrayList children = superDescription.getChildren();
for (int i = 0, size = children.size(); i < size; i++) {
description.addChild((Description)children.get(i));
for (Object aChildren : children) {
description.addChild((Description) aChildren);
}
return description;
}
return superDescription;
}

@Override
protected List<Runner> getChildren() {
final List<Runner> children = new ArrayList<>(super.getChildren());
boolean containsSuiteInside = false;
for (Iterator iterator = children.iterator(); iterator.hasNext(); ) {
Object child = iterator.next();
for (Runner child : children) {
if (isSuite(child)) {
containsSuiteInside = true;
break;
Expand All @@ -89,12 +89,10 @@ protected List<Runner> getChildren() {
}
try {
final Set allNames = new HashSet();
for (Iterator<Runner> iterator = children.iterator(); iterator.hasNext(); ) {
final Runner child = iterator.next();
for (final Runner child : children) {
allNames.add(describeChild(child).getDisplayName());
}
for (Iterator iterator = children.iterator(); iterator.hasNext(); ) {
final Object child = iterator.next();
for (final Runner child : children) {
if (isSuite(child)) {
skipSuiteComponents(allNames, child);
}
Expand All @@ -107,7 +105,7 @@ protected List<Runner> getChildren() {
}
}
}
catch (Throwable e) {
catch (Throwable ignored) {
}
return children;
}
Expand All @@ -122,8 +120,8 @@ private void skipSuiteComponents(Set allNames, Object child) {
final Method getChildrenMethod = Suite.class.getDeclaredMethod("getChildren", new Class[0]);
getChildrenMethod.setAccessible(true);
final List tests = (List)getChildrenMethod.invoke(child);
for (Iterator suiteIterator = tests.iterator(); suiteIterator.hasNext(); ) {
final String displayName = describeChild((Runner)suiteIterator.next()).getDisplayName();
for (Object test : tests) {
final String displayName = describeChild((Runner) test).getDisplayName();
if (allNames.contains(displayName)) {
allNames.remove(displayName);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,19 +51,24 @@ public static Request getClassesRequest(String suiteName, Class[] classes) {
static Request createIgnoreIgnoredClassRequest(final Class clazz, final boolean recursively) throws ClassNotFoundException {
Class.forName("org.junit.runners.BlockJUnit4ClassRunner"); //ignore IgnoreIgnored for junit4.4 and <
return new ClassRequest(clazz) {
@Override
public Runner getRunner() {
try {
return new AllDefaultPossibilitiesBuilder(true) {
@Override
protected IgnoredBuilder ignoredBuilder() {
return new IgnoredBuilder() {
@Override
public Runner runnerForClass(Class testClass) {
return null;
}
};
}

@Override
protected JUnit4Builder junit4Builder() {
return new JUnit4Builder() {
@Override
public Runner runnerForClass(Class testClass) throws Throwable {
if (!recursively) {
return super.runnerForClass(testClass);
Expand All @@ -73,6 +78,7 @@ public Runner runnerForClass(Class testClass) throws Throwable {
BlockJUnit4ClassRunner.class.getDeclaredMethod("isIgnored", FrameworkMethod.class);
if (ignored != null) {
return new BlockJUnit4ClassRunner(testClass) {
@Override
protected boolean isIgnored(FrameworkMethod child) {
return false;
}
Expand All @@ -83,6 +89,7 @@ protected boolean isIgnored(FrameworkMethod child) {
}
//older versions
return new BlockJUnit4ClassRunner(testClass) {
@Override
protected void runChild(FrameworkMethod method, RunNotifier notifier) {
final Description description = describeChild(method);
final EachTestNotifier eachNotifier = new EachTestNotifier(notifier, description);
Expand Down Expand Up @@ -115,16 +122,20 @@ protected void runChild(FrameworkMethod method, RunNotifier notifier) {

static Runner createIgnoreAnnotationAndJUnit4ClassRunner(Class clazz) throws Throwable {
return new AllDefaultPossibilitiesBuilder(true) {
@Override
protected AnnotatedBuilder annotatedBuilder() {
return new AnnotatedBuilder(this) {
@Override
public Runner runnerForClass(Class testClass) throws Exception {
return null;
}
};
}

@Override
protected JUnit4Builder junit4Builder() {
return new JUnit4Builder() {
@Override
public Runner runnerForClass(Class testClass) throws Throwable {
return null;
}
Expand Down
Loading
Loading