Support parallel execution of IDEA tests

This commit is contained in:
Mikhael Bogdanov
2019-04-08 21:23:22 +02:00
parent 8ae9e7a106
commit 8287e448d1
3 changed files with 29 additions and 0 deletions
@@ -31,6 +31,11 @@ import java.lang.reflect.Modifier;
* Works differently for Gradle and JPS. Default is Gradle for now. * Works differently for Gradle and JPS. Default is Gradle for now.
*/ */
public class JUnit3RunnerWithInners extends Runner implements Filterable, Sortable { public class JUnit3RunnerWithInners extends Runner implements Filterable, Sortable {
static {
KotlinTestUtils.setIdeaSystemPathProperties();
}
private final Runner delegateRunner; private final Runner delegateRunner;
public JUnit3RunnerWithInners(Class<?> klass) { public JUnit3RunnerWithInners(Class<?> klass) {
@@ -90,6 +90,8 @@ import java.util.*;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import static com.intellij.openapi.application.PathManager.PROPERTY_CONFIG_PATH;
import static com.intellij.openapi.application.PathManager.PROPERTY_SYSTEM_PATH;
import static org.jetbrains.kotlin.test.InTextDirectivesUtils.*; import static org.jetbrains.kotlin.test.InTextDirectivesUtils.*;
public class KotlinTestUtils { public class KotlinTestUtils {
@@ -112,6 +114,19 @@ public class KotlinTestUtils {
private static final List<File> filesToDelete = new ArrayList<>(); private static final List<File> filesToDelete = new ArrayList<>();
// It's important that this is not created per test, but rather per process.
public static final String IDEA_SYSTEM_PATH;
static {
try {
IDEA_SYSTEM_PATH = tmpDirForReusableLibrary("idea-system").getPath();
}
catch (IOException e) {
throw new RuntimeException(e);
}
}
/** /**
* Syntax: * Syntax:
* *
@@ -1294,4 +1309,9 @@ public class KotlinTestUtils {
// Several extension if name contains another dot // Several extension if name contains another dot
return name.indexOf('.', firstDotIndex + 1) != -1; return name.indexOf('.', firstDotIndex + 1) != -1;
} }
public static void setIdeaSystemPathProperties() {
System.setProperty(PROPERTY_SYSTEM_PATH, IDEA_SYSTEM_PATH);
System.setProperty(PROPERTY_CONFIG_PATH, IDEA_SYSTEM_PATH + "/config");
}
} }
+4
View File
@@ -1,3 +1,7 @@
tasks.withType<Test> {
maxParallelForks = Math.max(Runtime.getRuntime().availableProcessors() / 2, 1)
}
plugins { plugins {
kotlin("jvm") kotlin("jvm")
id("jps-compatible") id("jps-compatible")