mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
junit pattern: forbid module chooser - use default module, or module containing all tests or project otherwise (IDEA-64384; IDEA-64386; IDEA-64387)
This commit is contained in:
@@ -88,6 +88,10 @@ public class JavaParametersUtil {
|
||||
if (module == null) {
|
||||
throw CantRunException.noModuleConfigured(runConfigurationModule.getModuleName());
|
||||
}
|
||||
configureModule(module, parameters, classPathType, jreHome);
|
||||
}
|
||||
|
||||
public static void configureModule(Module module, JavaParameters parameters, int classPathType, String jreHome) throws CantRunException {
|
||||
parameters.configureByModule(module, classPathType, createModuleJdk(module, jreHome));
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ copy.configuration.action.name=Copy Configuration
|
||||
junit.configuration.display.name=JUnit
|
||||
junit.configuration.description=JUnit test configuration
|
||||
no.junit.error.message=No junit.jar
|
||||
no.junit.in.scope.error.message=No junit.jar: {0}
|
||||
no.junit.in.scope.error.message=No junit.jar in {0}
|
||||
junit.not.found.in.module.error.message=JUnit not found in module ''{0}''
|
||||
cannot.browse.test.inheritors.dialog.title=Can't Browse TestCase Inheritors
|
||||
seaching.test.progress.title=Searching For Tests...
|
||||
|
||||
@@ -24,6 +24,8 @@ import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.JavaExecutionUtil;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.util.JavaParametersUtil;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
@@ -35,6 +37,7 @@ import com.intellij.util.Function;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class TestsPattern extends TestObject {
|
||||
@@ -49,22 +52,32 @@ public class TestsPattern extends TestObject {
|
||||
protected void initialize() throws ExecutionException {
|
||||
super.initialize();
|
||||
final JUnitConfiguration.Data data = myConfiguration.getPersistentData();
|
||||
RunConfigurationModule module = myConfiguration.getConfigurationModule();
|
||||
JavaParametersUtil.configureModule(module, myJavaParameters, JavaParameters.JDK_AND_CLASSES_AND_TESTS,
|
||||
myConfiguration.isAlternativeJrePathEnabled() ? myConfiguration.getAlternativeJrePath() : null);
|
||||
|
||||
final Project project = module.getProject();
|
||||
final Project project = myConfiguration.getProject();
|
||||
boolean isJUnit4 = false;
|
||||
final ArrayList<String> classNames = new ArrayList<String>();
|
||||
final Set<Module> modules = new HashSet<Module>();
|
||||
for (String className : data.getPatterns()) {
|
||||
final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, className, GlobalSearchScope.allScope(project));
|
||||
if (psiClass != null && JUnitUtil.isTestClass(psiClass)) {
|
||||
classNames.add(className);
|
||||
modules.add(ModuleUtil.findModuleForPsiElement(psiClass));
|
||||
if (JUnitUtil.isJUnit4TestClass(psiClass)) {
|
||||
isJUnit4 = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
final String jreHome = myConfiguration.isAlternativeJrePathEnabled() ? myConfiguration.getAlternativeJrePath() : null;
|
||||
|
||||
Module module = myConfiguration.getConfigurationModule().getModule();
|
||||
if (module == null && modules.size() == 1 && modules.iterator().next() != null) {
|
||||
module = modules.iterator().next();
|
||||
}
|
||||
|
||||
if (module != null) {
|
||||
JavaParametersUtil.configureModule(module, myJavaParameters, JavaParameters.JDK_AND_CLASSES_AND_TESTS, jreHome);
|
||||
} else {
|
||||
JavaParametersUtil.configureProject(project, myJavaParameters, JavaParameters.JDK_AND_CLASSES_AND_TESTS, jreHome);
|
||||
}
|
||||
addClassesListToJavaParameters(classNames, new Function.Self<String, String>(), "", true, isJUnit4);
|
||||
}
|
||||
|
||||
|
||||
+23
-2
@@ -22,6 +22,7 @@ import com.intellij.execution.junit.JUnitConfiguration;
|
||||
import com.intellij.execution.junit.JUnitConfigurationType;
|
||||
import com.intellij.execution.junit.JUnitUtil;
|
||||
import com.intellij.execution.junit.TestClassFilter;
|
||||
import com.intellij.execution.testframework.SourceScope;
|
||||
import com.intellij.execution.testframework.TestSearchScope;
|
||||
import com.intellij.execution.ui.AlternativeJREPanel;
|
||||
import com.intellij.execution.ui.ClassBrowser;
|
||||
@@ -36,10 +37,12 @@ import com.intellij.openapi.ui.FixedSizeButton;
|
||||
import com.intellij.openapi.ui.LabeledComponent;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
||||
import com.intellij.openapi.ui.ex.MessagesEx;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.util.Icons;
|
||||
import gnu.trove.TIntArrayList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -260,8 +263,14 @@ public class JUnitConfigurable extends SettingsEditor<JUnitConfiguration> {
|
||||
final TIntArrayList enabledFields = ourEnabledFields.get(newType);
|
||||
for (int i = 0; i < myTestLocations.length; i++)
|
||||
getTestLocation(i).setEnabled(enabledFields.contains(i));
|
||||
if (newType != JUnitConfigurationModel.ALL_IN_PACKAGE) myModule.setEnabled(true);
|
||||
else onScopeChanged();
|
||||
if (newType == JUnitConfigurationModel.PATTERN) {
|
||||
myModule.setEnabled(false);
|
||||
} else if (newType != JUnitConfigurationModel.ALL_IN_PACKAGE) {
|
||||
myModule.setEnabled(true);
|
||||
}
|
||||
else {
|
||||
onScopeChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private static class PackageChooserActionListener extends BrowseModuleValueActionListener {
|
||||
@@ -287,6 +296,18 @@ public class JUnitConfigurable extends SettingsEditor<JUnitConfiguration> {
|
||||
textField.setText(text + (text.length() > 0 ? "||" : "") + psiClass.getQualifiedName());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ClassFilter.ClassFilterWithScope getFilter() throws NoFilterException {
|
||||
try {
|
||||
return TestClassFilter.create(SourceScope.wholeProject(getProject()), null);
|
||||
}
|
||||
catch (JUnitUtil.NoJUnitException ignore) {
|
||||
throw new NoFilterException(new MessagesEx.MessageInfo(getProject(),
|
||||
ignore.getMessage(),
|
||||
ExecutionBundle.message("cannot.browse.test.inheritors.dialog.title")));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
showDialog();
|
||||
|
||||
Reference in New Issue
Block a user