junit: avoid start via old junit3 starter (IDEA-80728)

vm option: idea.force.junit3
This commit is contained in:
Anna Kozlova
2012-02-02 18:45:42 +04:00
parent 000342e1b5
commit 08c20b63e0
7 changed files with 10 additions and 80 deletions
@@ -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) {