junit4: filter out only Idea's filters (IDEA-55451)

This commit is contained in:
anna
2010-06-07 12:57:32 +04:00
parent 39ad1e3415
commit 850791e5d0
2 changed files with 24 additions and 13 deletions
@@ -116,22 +116,24 @@ public class JUnit4IdeaTestRunner implements IdeaTestRunner {
field.setAccessible(true);
final Filter filter = (Filter)field.get(request);
final String filterDescription = filter.describe();
try {
final Description failedTestsDescription = Description.createSuiteDescription(filterDescription, null);
for (Iterator iterator = description.getChildren().iterator(); iterator.hasNext();) {
final Description childDescription = (Description)iterator.next();
if (filter.shouldRun(childDescription)) {
failedTestsDescription.addChild(childDescription);
if (filterDescription != null && (filterDescription.startsWith("Failed tests") || filterDescription.startsWith("Ignored"))) {
try {
final Description failedTestsDescription = Description.createSuiteDescription(filterDescription, null);
for (Iterator iterator = description.getChildren().iterator(); iterator.hasNext();) {
final Description childDescription = (Description)iterator.next();
if (filter.shouldRun(childDescription)) {
failedTestsDescription.addChild(childDescription);
}
}
description = failedTestsDescription;
if (!failedTestsDescription.isTest() && failedTestsDescription.testCount() == 1 && filterDescription.startsWith("Method")) {
description = (Description)failedTestsDescription.getChildren().get(0);
}
}
description = failedTestsDescription;
if (!failedTestsDescription.isTest() && failedTestsDescription.testCount() == 1 && filterDescription.startsWith("Method")) {
description = (Description)failedTestsDescription.getChildren().get(0);
catch (NoSuchMethodError e) {
//junit 4.0 doesn't have method createSuite(String, Annotation...) : skip it
}
}
catch (NoSuchMethodError e) {
//junit 4.0 doesn't have method createSuite(String, Annotation...) : skip it
}
return description;
}
@@ -134,7 +134,16 @@ public class JUnit4TestRunnerUtil {
return super.getRunner();
}
};
return classRequest.filterWith(Description.createTestDescription(clazz, methodName));
final Filter ignoredTestFilter = Filter.matchMethodDescription(Description.createTestDescription(clazz, methodName));
return classRequest.filterWith(new Filter() {
public boolean shouldRun(Description description) {
return ignoredTestFilter.shouldRun(description);
}
public String describe() {
return "Ignored " + methodName;
}
});
}
}
catch (Exception ignored) {