junit 5 option to substitute junit_rt for old IDEAs
authorAnna Kozlova <anna.kozlova@jetbrains.com>
Thu, 10 Mar 2016 14:06:25 +0000 (15:06 +0100)
committerAnna Kozlova <anna.kozlova@jetbrains.com>
Thu, 10 Mar 2016 15:22:14 +0000 (16:22 +0100)
plugins/junit5_rt/src/com/intellij/junit5/JUnit5TestRunnerUtil.java
plugins/junit_rt/src/com/intellij/rt/execution/junit/JUnitStarter.java

index a8d271f648db190be2cd6742b8c343919cd59376..d0b75d9d3327fdb0ab90f82c6eeac10790896faa 100644 (file)
@@ -15,7 +15,9 @@
  */
 package com.intellij.junit5;
 
+import com.intellij.rt.execution.junit.JUnitStarter;
 import org.junit.gen5.engine.discovery.NameBasedSelector;
+import org.junit.gen5.engine.discovery.PackageSelector;
 import org.junit.gen5.launcher.TestDiscoveryRequest;
 import org.junit.gen5.launcher.main.TestDiscoveryRequestBuilder;
 
@@ -28,7 +30,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 public class JUnit5TestRunnerUtil {
-  
+
   public static TestDiscoveryRequest buildRequest(String[] suiteClassNames, String[] packageNameRef) {
     if (suiteClassNames.length == 0) {
       return null;
@@ -54,6 +56,10 @@ public class JUnit5TestRunnerUtil {
             lines.add(line);
           }
           packageNameRef[0] = packageName.length() == 0 ? "<default package>" : packageName;
+          if (JUnitStarter.isJUnit5Preferred()) {
+            final PackageSelector selector = PackageSelector.forPackageName(packageName);
+            return builder.select(selector).build();
+          }
         }
         finally {
           reader.close();
index 7e6dbbad721e373f6779801e9c452f316126518e..2166410daa29eacab3bd4dc0a6907c4b06bee04f 100644 (file)
@@ -36,6 +36,7 @@ public class JUnitStarter {
   public static final String JUNIT3_PARAMETER = "-junit3";
   public static final String JUNIT4_PARAMETER = "-junit4";
   public static final String JUNIT5_PARAMETER = "-junit5";
+  public static final String JUNIT5_KEY = "idea.is.junit5";
 
   private static final String SOCKET = "-socket";
   public static final String JUNIT3_RUNNER_NAME = "com.intellij.junit3.JUnit3IdeaTestRunner";
@@ -83,7 +84,7 @@ public class JUnitStarter {
   }
 
   private static String processParameters(Vector args, final List listeners, String[] params) {
-    String agentName = JUNIT4_RUNNER_NAME;
+    String agentName = isJUnit5Preferred() ? JUNIT5_RUNNER_NAME : JUNIT4_RUNNER_NAME;
     Vector result = new Vector(args.size());
     for (int i = 0; i < args.size(); i++) {
       String arg = (String)args.get(i);
@@ -176,6 +177,12 @@ public class JUnitStarter {
     return agentName;
   }
 
+  public static boolean isJUnit5Preferred() {
+    final String useJUnit5 = System.getProperty(JUNIT5_KEY);
+    final Boolean boolValue = useJUnit5 == null ? null : Boolean.valueOf(useJUnit5);
+    return boolValue != null && boolValue.booleanValue();
+  }
+
   public static boolean checkVersion(String[] args, PrintStream printStream) {
     for (int i = 0; i < args.length; i++) {
       String arg = args[i];