mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
junit: avoid start via old junit3 starter (IDEA-80728)
vm option: idea.force.junit3
This commit is contained in:
@@ -16,7 +16,10 @@
|
||||
|
||||
package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.execution.*;
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.JavaExecutionUtil;
|
||||
import com.intellij.execution.ProgramRunnerUtil;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
@@ -24,9 +27,7 @@ import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import com.intellij.rt.execution.junit.JUnitStarter;
|
||||
|
||||
class TestClass extends TestObject {
|
||||
public TestClass(final Project project,
|
||||
@@ -41,11 +42,6 @@ class TestClass extends TestObject {
|
||||
final JUnitConfiguration.Data data = myConfiguration.getPersistentData();
|
||||
RunConfigurationModule module = myConfiguration.getConfigurationModule();
|
||||
configureModule(myJavaParameters, module, data.getMainClassName());
|
||||
final Project project = module.getProject();
|
||||
final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, data.getMainClassName(), GlobalSearchScope.allScope(project));
|
||||
if (JUnitUtil.isJUnit4TestClass(psiClass)) {
|
||||
myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER);
|
||||
}
|
||||
myJavaParameters.getProgramParametersList().add(data.getMainClassName());
|
||||
}
|
||||
|
||||
|
||||
@@ -25,11 +25,9 @@ import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementAdapter;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import com.intellij.refactoring.listeners.UndoRefactoringElementListener;
|
||||
import com.intellij.rt.execution.junit.JUnitStarter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
class TestMethod extends TestObject {
|
||||
@@ -45,8 +43,6 @@ class TestMethod extends TestObject {
|
||||
final JUnitConfiguration.Data data = myConfiguration.getPersistentData();
|
||||
RunConfigurationModule module = myConfiguration.getConfigurationModule();
|
||||
configureModule(getJavaParameters(), module, data.getMainClassName());
|
||||
addJUnit4Parameter(data, module.getProject());
|
||||
|
||||
getJavaParameters().getProgramParametersList().add(data.getMainClassName() + "," + data.getMethodName());
|
||||
}
|
||||
|
||||
@@ -54,23 +50,6 @@ class TestMethod extends TestObject {
|
||||
super.initialize();
|
||||
}
|
||||
|
||||
protected void addJUnit4Parameter(final JUnitConfiguration.Data data, Project project) {
|
||||
final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, data.getMainClassName(), GlobalSearchScope.allScope(project));
|
||||
LOG.assertTrue(psiClass != null);
|
||||
if (JUnitUtil.isJUnit4TestClass(psiClass)) {
|
||||
myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER);
|
||||
return;
|
||||
}
|
||||
final String methodName = data.getMethodName();
|
||||
PsiMethod[] methods = psiClass.findMethodsByName(methodName, true);
|
||||
for (PsiMethod method : methods) {
|
||||
if (JUnitUtil.isTestAnnotated(method)) {
|
||||
myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String suggestActionName() {
|
||||
return ProgramRunnerUtil.shortenName(myConfiguration.getPersistentData().METHOD_NAME, 2) + "()";
|
||||
}
|
||||
|
||||
@@ -33,7 +33,6 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.rt.execution.junit.JUnitStarter;
|
||||
import com.intellij.util.Function;
|
||||
|
||||
import java.util.Collection;
|
||||
@@ -58,7 +57,6 @@ public class TestMethods extends TestMethod {
|
||||
final JUnitConfiguration.Data data = myConfiguration.getPersistentData();
|
||||
RunConfigurationModule module = myConfiguration.getConfigurationModule();
|
||||
final Project project = module.getProject();
|
||||
addJUnit4Parameter(data, project);
|
||||
final ExecutionException[] exception = new ExecutionException[1];
|
||||
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
||||
public void run() {
|
||||
@@ -92,21 +90,6 @@ public class TestMethods extends TestMethod {
|
||||
}, data.getPackageName(), true, false);
|
||||
|
||||
}
|
||||
protected void addJUnit4Parameter(final JUnitConfiguration.Data data, Project project) {
|
||||
for (AbstractTestProxy failedTest : myFailedTests) {
|
||||
Location location = failedTest.getLocation(project);
|
||||
if (!(location instanceof MethodLocation)) continue;
|
||||
if (JUnitUtil.isJUnit4TestClass(((MethodLocation)location).getContainingClass())) {
|
||||
myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER);
|
||||
return;
|
||||
}
|
||||
PsiMethod method = ((MethodLocation)location).getPsiElement();
|
||||
if (JUnitUtil.isTestAnnotated(method)) {
|
||||
myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String suggestActionName() {
|
||||
return ActionsBundle.message("action.RerunFailedTests.text");
|
||||
|
||||
@@ -399,7 +399,6 @@ public abstract class TestObject implements JavaCommandLine {
|
||||
|
||||
final PrintWriter writer = new PrintWriter(myTempFile, "UTF-8");
|
||||
try {
|
||||
writer.println(junit4 ? JUnitStarter.JUNIT4_PARAMETER : "-junit3");
|
||||
writer.println(packageName);
|
||||
final List<String> testNames = new ArrayList<String>();
|
||||
for (final T element : elements) {
|
||||
|
||||
@@ -51,7 +51,6 @@ public class TestRunnerUtil {
|
||||
BufferedReader reader = new BufferedReader(new FileReader(suiteClassName.substring(1)));
|
||||
Vector vector;
|
||||
try {
|
||||
reader.readLine(); //skip junit4/junit3 parameter
|
||||
suiteName = reader.readLine();
|
||||
vector = new Vector();
|
||||
String line;
|
||||
|
||||
@@ -17,8 +17,6 @@ package com.intellij.junit4;
|
||||
|
||||
import org.junit.Ignore;
|
||||
import org.junit.internal.AssumptionViolatedException;
|
||||
import org.junit.internal.builders.AllDefaultPossibilitiesBuilder;
|
||||
import org.junit.internal.builders.AnnotatedBuilder;
|
||||
import org.junit.internal.requests.ClassRequest;
|
||||
import org.junit.internal.runners.model.EachTestNotifier;
|
||||
import org.junit.runner.Description;
|
||||
@@ -29,14 +27,11 @@ import org.junit.runner.manipulation.Filter;
|
||||
import org.junit.runner.notification.RunNotifier;
|
||||
import org.junit.runners.BlockJUnit4ClassRunner;
|
||||
import org.junit.runners.Parameterized;
|
||||
import org.junit.runners.ParentRunner;
|
||||
import org.junit.runners.model.FrameworkMethod;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.*;
|
||||
@@ -60,7 +55,6 @@ public class JUnit4TestRunnerUtil {
|
||||
final Map classMethods = new HashMap();
|
||||
BufferedReader reader = new BufferedReader(new FileReader(suiteClassName.substring(1)));
|
||||
try {
|
||||
reader.readLine(); //skip junit4/junit3 parameter
|
||||
final String packageName = reader.readLine();
|
||||
String line;
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@ import java.util.Vector;
|
||||
public class JUnitStarter {
|
||||
public static final int VERSION = 5;
|
||||
public static final String IDE_VERSION = "-ideVersion";
|
||||
public static final String JUNIT4_PARAMETER = "-junit4";
|
||||
private static final String SOCKET = "-socket";
|
||||
private static String ourForkMode;
|
||||
private static String ourCommandFileName;
|
||||
@@ -65,17 +64,12 @@ public class JUnitStarter {
|
||||
}
|
||||
|
||||
private static boolean processParameters(Vector args, final List listeners) {
|
||||
boolean isJunit4 = false;
|
||||
String tempFilePath = null;
|
||||
Vector result = new Vector(args.size());
|
||||
for (int i = 0; i < args.size(); i++) {
|
||||
String arg = (String)args.get(i);
|
||||
if (arg.startsWith(IDE_VERSION)) {
|
||||
//ignore
|
||||
}
|
||||
else if (arg.equals(JUNIT4_PARAMETER)){
|
||||
isJunit4 = true;
|
||||
}
|
||||
else {
|
||||
if (arg.startsWith("@@@")) {
|
||||
final int pos = arg.indexOf(',');
|
||||
@@ -96,8 +90,6 @@ public class JUnitStarter {
|
||||
}
|
||||
}
|
||||
continue;
|
||||
} else if (arg.startsWith("@")) {
|
||||
tempFilePath = arg.substring(1);
|
||||
} else if (arg.startsWith(SOCKET)) {
|
||||
final int port = Integer.parseInt(arg.substring(SOCKET.length()));
|
||||
try {
|
||||
@@ -114,37 +106,25 @@ public class JUnitStarter {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
isJunit4 = isJUnit4(isJunit4, tempFilePath);
|
||||
continue;
|
||||
}
|
||||
result.addElement(arg);
|
||||
}
|
||||
}
|
||||
if (tempFilePath != null && !args.contains(SOCKET)) {
|
||||
isJunit4 = isJUnit4(isJunit4, tempFilePath);
|
||||
}
|
||||
args.removeAllElements();
|
||||
for (int i = 0; i < result.size(); i++) {
|
||||
String arg = (String)result.get(i);
|
||||
args.addElement(arg);
|
||||
}
|
||||
return isJunit4;
|
||||
}
|
||||
|
||||
private static boolean isJUnit4(boolean junit4, String tempFilePath) {
|
||||
final String forceJUnit3 = System.getProperty("idea.force.junit3");
|
||||
if (forceJUnit3 != null && Boolean.valueOf(forceJUnit3).booleanValue()) return false;
|
||||
try {
|
||||
BufferedReader reader = new BufferedReader(new FileReader(tempFilePath));
|
||||
try {
|
||||
junit4 |= JUNIT4_PARAMETER.equals(reader.readLine());
|
||||
}
|
||||
finally {
|
||||
reader.close();
|
||||
}
|
||||
Class.forName("org.junit.Test");
|
||||
return true;
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
catch (ClassNotFoundException e) {
|
||||
return false;
|
||||
}
|
||||
return junit4;
|
||||
}
|
||||
|
||||
public static boolean checkVersion(String[] args, SegmentedOutputStream notifications) {
|
||||
|
||||
Reference in New Issue
Block a user