junit 5: support pattern configurations (IDEA-164088)

This commit is contained in:
Anna.Kozlova
2017-03-31 16:15:25 +02:00
parent b058e1fd6a
commit 678944314f
6 changed files with 22 additions and 11 deletions

View File

@@ -238,7 +238,9 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState<JUnitCon
return getConfiguration().getForkMode();
}
protected <T> void addClassesListToJavaParameters(Collection<? extends T> elements, Function<T, String> nameFunction, String packageName,
protected <T> void addClassesListToJavaParameters(Collection<? extends T> elements,
Function<T, String> nameFunction,
String packageName,
boolean createTempFile, JavaParameters javaParameters) throws CantRunException {
try {
if (createTempFile) {
@@ -284,7 +286,8 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState<JUnitCon
}
final String category = JUnitConfiguration.TEST_CATEGORY.equals(data.TEST_OBJECT) ? data.getCategory() : "";
JUnitStarter.printClassesList(testNames, packageName, category, myTempFile);
final String filters = JUnitConfiguration.TEST_PATTERN.equals(data.TEST_OBJECT) ? data.getPatternPresentation() : "";
JUnitStarter.printClassesList(testNames, packageName, category, filters, myTempFile);
writeClassesPerModule(packageName, javaParameters, perModule);
}

View File

@@ -17,6 +17,7 @@ package com.intellij.junit5;
import org.junit.platform.commons.util.AnnotationUtils;
import org.junit.platform.engine.DiscoverySelector;
import org.junit.platform.engine.discovery.ClassNameFilter;
import org.junit.platform.engine.discovery.DiscoverySelectors;
import org.junit.platform.launcher.LauncherDiscoveryRequest;
import org.junit.platform.launcher.TagFilter;
@@ -28,10 +29,6 @@ import java.io.IOException;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
public class JUnit5TestRunnerUtil {
@@ -54,6 +51,7 @@ public class JUnit5TestRunnerUtil {
if (packageName == null) return null;
String tagName = reader.readLine();
String filters = reader.readLine();
String line;
List<DiscoverySelector> selectors = new ArrayList<>();
@@ -61,8 +59,15 @@ public class JUnit5TestRunnerUtil {
selectors.add(createSelector(line));
}
packageNameRef[0] = packageName.length() == 0 ? "<default package>" : packageName;
builder = selectors.isEmpty() ? builder.selectors(DiscoverySelectors.selectPackage(packageName))
: builder.selectors(selectors);
if (selectors.isEmpty()) {
builder = builder.selectors(DiscoverySelectors.selectPackage(packageName));
if (filters != null && !filters.isEmpty()) {
builder = builder.filters(ClassNameFilter.includeClassNamePatterns(filters.split("\\|\\|")));
}
}
else {
builder = builder.selectors(selectors);
}
if (tagName != null && !tagName.isEmpty()) {
builder = builder.filters(TagFilter.includeTags(tagName));
}

View File

@@ -54,6 +54,7 @@ public class TestRunnerUtil {
suiteName = reader.readLine();
reader.readLine(); //category
reader.readLine();//filters
vector = new Vector();
String line;

View File

@@ -58,6 +58,8 @@ public class JUnit4TestRunnerUtil {
final String categoryName = reader.readLine();
final Class category = categoryName != null && categoryName.length() > 0 ? loadTestClass(categoryName) : null;
final String filters = reader.readLine();
String line;
while ((line = reader.readLine()) != null) {

View File

@@ -19,7 +19,6 @@ import com.intellij.rt.execution.testFrameworks.ForkedSplitter;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
@@ -63,7 +62,7 @@ public class JUnitForkedSplitter extends ForkedSplitter {
Object rootDescription) throws IOException {
File tempFile = File.createTempFile("idea_junit", ".tmp");
tempFile.deleteOnExit();
JUnitStarter.printClassesList(classNames, packageName + ", working directory: \'" + workingDir + "\'", "", tempFile);
JUnitStarter.printClassesList(classNames, packageName + ", working directory: \'" + workingDir + "\'", "", "", tempFile);
final List childArgs = new ArrayList();
childArgs.add("@" + tempFile.getAbsolutePath());
childArgs.addAll(myNewArgs);

View File

@@ -252,12 +252,13 @@ public class JUnitStarter {
return Class.forName(agentName);
}
public static void printClassesList(List classNames, String packageName, String category, File tempFile) throws IOException {
public static void printClassesList(List classNames, String packageName, String category, String filters, File tempFile) throws IOException {
final PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(tempFile), "UTF-8"));
try {
writer.println(packageName); //package name
writer.println(category); //category
writer.println(filters); //patterns
for (int i = 0; i < classNames.size(); i++) {
writer.println(classNames.get(i));
}