mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ensure single tests are started with old junit when they are compatible with
This commit is contained in:
@@ -219,7 +219,7 @@ public class JUnitUtil {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isJUnit5TestClass(final PsiClass psiClass, boolean checkAbstract) {
|
||||
public static boolean isJUnit5TestClass(@NotNull final PsiClass psiClass, boolean checkAbstract) {
|
||||
final PsiModifierList modifierList = psiClass.getModifierList();
|
||||
if (modifierList == null) return false;
|
||||
|
||||
|
||||
@@ -19,13 +19,19 @@ package com.intellij.execution.junit;
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.JavaExecutionUtil;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.junit2.configuration.JUnitConfigurationModel;
|
||||
import com.intellij.execution.configurations.JavaParameters;
|
||||
import com.intellij.execution.configurations.JavaRunConfigurationModule;
|
||||
import com.intellij.execution.configurations.RuntimeConfigurationException;
|
||||
import com.intellij.execution.configurations.RuntimeConfigurationWarning;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import com.intellij.rt.execution.junit.JUnitStarter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
class TestClass extends TestObject {
|
||||
public TestClass(JUnitConfiguration configuration, ExecutionEnvironment environment) {
|
||||
@@ -40,6 +46,20 @@ class TestClass extends TestObject {
|
||||
return javaParameters;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected String getPreferredRunner(GlobalSearchScope globalSearchScope) {
|
||||
Project project = getConfiguration().getProject();
|
||||
final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, getConfiguration().getPersistentData().getMainClassName(), globalSearchScope);
|
||||
if (psiClass != null) {
|
||||
if (JUnitUtil.isJUnit5TestClass(psiClass, false)) {
|
||||
return JUnitStarter.JUNIT5_RUNNER_NAME;
|
||||
}
|
||||
return JUnitStarter.JUNIT4_PARAMETER;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected String getForkMode() {
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import com.intellij.refactoring.listeners.UndoRefactoringElementListener;
|
||||
import com.intellij.rt.execution.junit.JUnitStarter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
class TestMethod extends TestObject {
|
||||
public TestMethod(JUnitConfiguration configuration, ExecutionEnvironment environment) {
|
||||
@@ -39,8 +40,6 @@ class TestMethod extends TestObject {
|
||||
protected JavaParameters createJavaParameters() throws ExecutionException {
|
||||
final JavaParameters javaParameters = createDefaultJavaParameters();
|
||||
final JUnitConfiguration.Data data = getConfiguration().getPersistentData();
|
||||
RunConfigurationModule module = getConfiguration().getConfigurationModule();
|
||||
addJUnit3Parameter(javaParameters, data, module.getProject());
|
||||
javaParameters.getProgramParametersList().add(data.getMainClassName() + "," + data.getMethodNameWithSignature());
|
||||
return javaParameters;
|
||||
}
|
||||
@@ -49,19 +48,30 @@ class TestMethod extends TestObject {
|
||||
return super.createJavaParameters();
|
||||
}
|
||||
|
||||
protected void addJUnit3Parameter(JavaParameters javaParameters, final JUnitConfiguration.Data data, Project project) throws ExecutionException {
|
||||
final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, data.getMainClassName(), GlobalSearchScope.allScope(project));
|
||||
if (psiClass == null || JUnitUtil.isJUnit4TestClass(psiClass) || JUnitUtil.isJUnit5(psiClass)) {
|
||||
return;
|
||||
@Nullable
|
||||
@Override
|
||||
protected String getPreferredRunner(GlobalSearchScope globalSearchScope) {
|
||||
Project project = getConfiguration().getProject();
|
||||
JUnitConfiguration.Data data = getConfiguration().getPersistentData();
|
||||
final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, data.getMainClassName(), globalSearchScope);
|
||||
if (psiClass == null) return null;
|
||||
|
||||
if (JUnitUtil.isJUnit5TestClass(psiClass, false)) {
|
||||
return JUnitStarter.JUNIT5_RUNNER_NAME;
|
||||
}
|
||||
|
||||
if (JUnitUtil.isJUnit4TestClass(psiClass)) {
|
||||
return JUnitStarter.JUNIT4_PARAMETER;
|
||||
}
|
||||
|
||||
final String methodName = data.getMethodName();
|
||||
final PsiMethod[] methods = psiClass.findMethodsByName(methodName, true);
|
||||
for (PsiMethod method : methods) {
|
||||
if (JUnitUtil.isTestAnnotated(method)) {
|
||||
return;
|
||||
return JUnitStarter.JUNIT4_PARAMETER;
|
||||
}
|
||||
}
|
||||
javaParameters.getProgramParametersList().add(JUnitStarter.JUNIT3_PARAMETER);
|
||||
return JUnitStarter.JUNIT3_PARAMETER;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -158,8 +158,8 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState<JUnitCon
|
||||
final Project project = getConfiguration().getProject();
|
||||
final SourceScope sourceScope = getSourceScope();
|
||||
GlobalSearchScope globalSearchScope = getScopeForJUnit(getConfiguration().getConfigurationModule().getModule(), sourceScope, project);
|
||||
if (JUnitUtil.isJUnit5(globalSearchScope, project)) {
|
||||
javaParameters.getProgramParametersList().add(JUnitStarter.JUNIT5_PARAMETER);
|
||||
String preferredRunner = getPreferredRunner(globalSearchScope);
|
||||
if (JUnitStarter.JUNIT5_RUNNER_NAME.equals(preferredRunner)) {
|
||||
//detect junit 5 rt without dependency on junit5_rt module
|
||||
File junit4Rt = new File(PathUtil.getJarPathForClass(JUnit4IdeaTestRunner.class));
|
||||
String junit5Name = junit4Rt.getName().replace("junit", "junit5");
|
||||
@@ -191,10 +191,18 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState<JUnitCon
|
||||
}
|
||||
}
|
||||
}
|
||||
if (preferredRunner != null) {
|
||||
javaParameters.getProgramParametersList().add(preferredRunner);
|
||||
}
|
||||
|
||||
return javaParameters;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected String getPreferredRunner(GlobalSearchScope globalSearchScope) {
|
||||
return JUnitUtil.isJUnit5(globalSearchScope, getConfiguration().getProject()) ? JUnitStarter.JUNIT5_RUNNER_NAME : null;
|
||||
}
|
||||
|
||||
private static boolean hasPackageWithDirectories(JavaPsiFacade psiFacade,
|
||||
String packageQName,
|
||||
GlobalSearchScope globalSearchScope) {
|
||||
|
||||
Reference in New Issue
Block a user