summaryrefslogtreecommitdiff
path: root/plugins/junit/src/com/intellij/execution/junit
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/junit/src/com/intellij/execution/junit')
-rw-r--r--plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java61
-rw-r--r--plugins/junit/src/com/intellij/execution/junit/TestCategory.java14
-rw-r--r--plugins/junit/src/com/intellij/execution/junit/TestClass.java12
-rw-r--r--plugins/junit/src/com/intellij/execution/junit/TestDirectory.java21
-rw-r--r--plugins/junit/src/com/intellij/execution/junit/TestMethod.java13
-rw-r--r--plugins/junit/src/com/intellij/execution/junit/TestMethods.java20
-rw-r--r--plugins/junit/src/com/intellij/execution/junit/TestObject.java170
-rw-r--r--plugins/junit/src/com/intellij/execution/junit/TestPackage.java8
-rw-r--r--plugins/junit/src/com/intellij/execution/junit/TestsPattern.java8
9 files changed, 176 insertions, 151 deletions
diff --git a/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java b/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java
index 28cd670446e9..0b7ab14a151d 100644
--- a/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java
+++ b/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java
@@ -20,19 +20,23 @@ import com.intellij.diagnostic.logging.LogConfigurationPanel;
import com.intellij.execution.*;
import com.intellij.execution.configuration.EnvironmentVariablesComponent;
import com.intellij.execution.configurations.*;
+import com.intellij.execution.executors.DefaultRunExecutor;
import com.intellij.execution.junit2.configuration.JUnitConfigurable;
import com.intellij.execution.junit2.info.MethodLocation;
import com.intellij.execution.runners.ExecutionEnvironment;
+import com.intellij.execution.runners.ExecutionEnvironmentBuilder;
import com.intellij.execution.testframework.TestSearchScope;
import com.intellij.execution.util.JavaParametersUtil;
import com.intellij.openapi.components.PathMacroManager;
-import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.options.SettingsEditorGroup;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.*;
+import com.intellij.openapi.util.Comparing;
+import com.intellij.openapi.util.DefaultJDOMExternalizer;
+import com.intellij.openapi.util.InvalidDataException;
+import com.intellij.openapi.util.WriteExternalException;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
@@ -45,7 +49,6 @@ import java.util.*;
public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigurationModule>
implements CommonJavaRunConfigurationParameters, RefactoringListenerProvider {
- private static final Logger LOG = Logger.getInstance("#com.intellij.execution.junit.JUnitConfiguration");
public static final String DEFAULT_PACKAGE_NAME = ExecutionBundle.message("default.package.presentable.name");
@NonNls public static final String TEST_CLASS = "class";
@@ -75,11 +78,12 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
myData = data;
}
+ @Override
public RunProfileState getState(@NotNull final Executor executor, @NotNull final ExecutionEnvironment env) throws ExecutionException {
- return TestObject.fromString(myData.TEST_OBJECT, getProject(), this, env);
+ return TestObject.fromString(myData.TEST_OBJECT, this, env);
}
-
+ @Override
@NotNull
public SettingsEditor<? extends RunConfiguration> getConfigurationEditor() {
SettingsEditorGroup<JUnitConfiguration> group = new SettingsEditorGroup<JUnitConfiguration>();
@@ -93,22 +97,25 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
return myData;
}
+ @Override
public RefactoringElementListener getRefactoringElementListener(final PsiElement element) {
- final RefactoringElementListener listener = myData.getTestObject(getProject(), this).getListener(element, this);
+ final RefactoringElementListener listener = myData.getTestObject(this).getListener(element, this);
return RunConfigurationExtension.wrapRefactoringElementListener(element, this, listener);
}
+ @Override
public void checkConfiguration() throws RuntimeConfigurationException {
- myData.getTestObject(getProject(), this).checkConfiguration();
+ myData.getTestObject(this).checkConfiguration();
JavaRunConfigurationExtensionManager.checkConfigurationIsValid(this);
}
+ @Override
public Collection<Module> getValidModules() {
if (TEST_PACKAGE.equals(myData.TEST_OBJECT) || TEST_PATTERN.equals(myData.TEST_OBJECT)) {
return Arrays.asList(ModuleManager.getInstance(getProject()).getModules());
}
try {
- myData.getTestObject(getProject(), this).checkConfiguration();
+ myData.getTestObject(this).checkConfiguration();
}
catch (RuntimeConfigurationError e) {
return Arrays.asList(ModuleManager.getInstance(getProject()).getModules());
@@ -120,10 +127,12 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
return JavaRunConfigurationModule.getModulesForClass(getProject(), myData.getMainClassName());
}
+ @Override
protected ModuleBasedConfiguration createInstance() {
return new JUnitConfiguration(getName(), getProject(), myData.clone(), JUnitConfigurationType.getInstance().getConfigurationFactories()[0]);// throw new RuntimeException("Should not call");
}
+ @Override
public String suggestedName() {
return myData.getGeneratedName(getConfigurationModule());
}
@@ -133,68 +142,84 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
return getTestObject().suggestActionName();
}
+ @Override
public void setVMParameters(String value) {
myData.setVMParameters(value);
}
+ @Override
public String getVMParameters() {
return myData.getVMParameters();
}
+ @Override
public void setProgramParameters(String value) {
myData.setProgramParameters(value);
}
+ @Override
public String getProgramParameters() {
return myData.getProgramParameters();
}
+ @Override
public void setWorkingDirectory(String value) {
myData.setWorkingDirectory(value);
}
+ @Override
public String getWorkingDirectory() {
return myData.getWorkingDirectory();
}
+ @Override
public void setEnvs(@NotNull Map<String, String> envs) {
myData.setEnvs(envs);
}
+ @Override
@NotNull
public Map<String, String> getEnvs() {
return myData.getEnvs();
}
+ @Override
public void setPassParentEnvs(boolean passParentEnvs) {
myData.PASS_PARENT_ENVS = passParentEnvs;
}
+ @Override
public boolean isPassParentEnvs() {
return myData.PASS_PARENT_ENVS;
}
+ @Override
public boolean isAlternativeJrePathEnabled() {
return ALTERNATIVE_JRE_PATH_ENABLED;
}
+ @Override
public void setAlternativeJrePathEnabled(boolean enabled) {
- this.ALTERNATIVE_JRE_PATH_ENABLED = enabled;
+ ALTERNATIVE_JRE_PATH_ENABLED = enabled;
}
+ @Override
public String getAlternativeJrePath() {
return ALTERNATIVE_JRE_PATH;
}
+ @Override
public void setAlternativeJrePath(String path) {
- this.ALTERNATIVE_JRE_PATH = path;
+ ALTERNATIVE_JRE_PATH = path;
}
+ @Override
public String getRunClass() {
final Data data = getPersistentData();
return data.TEST_OBJECT != TEST_CLASS && data.TEST_OBJECT != TEST_METHOD ? null : data.getMainClassName();
}
+ @Override
public String getPackage() {
final Data data = getPersistentData();
return !Comparing.strEqual(data.TEST_OBJECT, TEST_PACKAGE) ? null : data.getPackageName();
@@ -218,6 +243,7 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
setGeneratedName();
}
+ @Override
@NotNull
public Module[] getModules() {
if (TEST_PACKAGE.equals(myData.TEST_OBJECT) &&
@@ -228,34 +254,40 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
}
final RefactoringListeners.Accessor<PsiPackage> myPackage = new RefactoringListeners.Accessor<PsiPackage>() {
+ @Override
public void setName(final String qualifiedName) {
final boolean generatedName = isGeneratedName();
myData.PACKAGE_NAME = qualifiedName;
if (generatedName) setGeneratedName();
}
+ @Override
public PsiPackage getPsiElement() {
final String qualifiedName = myData.getPackageName();
return qualifiedName != null ? JavaPsiFacade.getInstance(getProject()).findPackage(qualifiedName)
: null;
}
+ @Override
public void setPsiElement(final PsiPackage psiPackage) {
setName(psiPackage.getQualifiedName());
}
};
final RefactoringListeners.Accessor<PsiClass> myClass = new RefactoringListeners.Accessor<PsiClass>() {
+ @Override
public void setName(@NotNull final String qualifiedName) {
final boolean generatedName = isGeneratedName();
myData.MAIN_CLASS_NAME = qualifiedName;
if (generatedName) setGeneratedName();
}
+ @Override
public PsiClass getPsiElement() {
return getConfigurationModule().findClass(myData.getMainClassName());
}
+ @Override
public void setPsiElement(final PsiClass psiClass) {
final Module originalModule = getConfigurationModule().getModule();
setMainClass(psiClass);
@@ -264,9 +296,10 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
};
public TestObject getTestObject() {
- return myData.getTestObject(getProject(), this);
+ return myData.getTestObject(this);
}
+ @Override
public void readExternal(final Element element) throws InvalidDataException {
PathMacroManager.getInstance(getProject()).expandPaths(element);
super.readExternal(element);
@@ -304,6 +337,7 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
}
}
+ @Override
public void writeExternal(final Element element) throws WriteExternalException {
super.writeExternal(element);
JavaRunConfigurationExtensionManager.getInstance().writeExternal(this, element);
@@ -445,6 +479,7 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
return TEST_SEARCH_SCOPE.getScope();
}
+ @Override
public Data clone() {
try {
Data data = (Data)super.clone();
@@ -550,9 +585,9 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
myPattern = pattern;
}
- public TestObject getTestObject(final Project project, final JUnitConfiguration configuration) {
+ public TestObject getTestObject(@NotNull JUnitConfiguration configuration) {
//TODO[dyoma]!
- return TestObject.fromString(TEST_OBJECT, project, configuration, null);
+ return TestObject.fromString(TEST_OBJECT, configuration, ExecutionEnvironmentBuilder.create(DefaultRunExecutor.getRunExecutorInstance(), configuration).build());
}
public Module setMainClass(final PsiClass testClass) {
diff --git a/plugins/junit/src/com/intellij/execution/junit/TestCategory.java b/plugins/junit/src/com/intellij/execution/junit/TestCategory.java
index 457e3d342336..01cced5a24a4 100644
--- a/plugins/junit/src/com/intellij/execution/junit/TestCategory.java
+++ b/plugins/junit/src/com/intellij/execution/junit/TestCategory.java
@@ -22,7 +22,6 @@ import com.intellij.execution.configurations.RuntimeConfigurationException;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.util.JavaParametersUtil;
import com.intellij.execution.util.ProgramParametersUtil;
-import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
/**
@@ -30,13 +29,8 @@ import com.intellij.psi.*;
* Date: 4/21/11
*/
class TestCategory extends TestPackage {
- private final Project myProject;
-
- public TestCategory(Project project,
- JUnitConfiguration configuration,
- ExecutionEnvironment environment) {
- super(project, configuration, environment);
- myProject = project;
+ public TestCategory(JUnitConfiguration configuration, ExecutionEnvironment environment) {
+ super(configuration, environment);
}
@Override
@@ -56,14 +50,14 @@ class TestCategory extends TestPackage {
@Override
protected PsiPackage getPackage(JUnitConfiguration.Data data) throws CantRunException {
- return JavaPsiFacade.getInstance(myProject).findPackage("");
+ return JavaPsiFacade.getInstance(myEnvironment.getProject()).findPackage("");
}
@Override
public boolean isConfiguredByElement(JUnitConfiguration configuration,
PsiClass testClass,
PsiMethod testMethod,
- PsiPackage testPackage,
+ PsiPackage testPackage,
PsiDirectory testDir) {
return false;
}
diff --git a/plugins/junit/src/com/intellij/execution/junit/TestClass.java b/plugins/junit/src/com/intellij/execution/junit/TestClass.java
index d1b687d05af9..e3ab54aa6adc 100644
--- a/plugins/junit/src/com/intellij/execution/junit/TestClass.java
+++ b/plugins/junit/src/com/intellij/execution/junit/TestClass.java
@@ -24,18 +24,16 @@ import com.intellij.execution.configurations.RunConfigurationModule;
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.refactoring.listeners.RefactoringElementListener;
class TestClass extends TestObject {
- public TestClass(final Project project,
- final JUnitConfiguration configuration,
- ExecutionEnvironment environment) {
- super(project, configuration, environment);
+ public TestClass(JUnitConfiguration configuration, ExecutionEnvironment environment) {
+ super(configuration, environment);
}
+ @Override
protected void initialize() throws ExecutionException {
super.initialize();
final JUnitConfiguration.Data data = myConfiguration.getPersistentData();
@@ -44,6 +42,7 @@ class TestClass extends TestObject {
myJavaParameters.getProgramParametersList().add(data.getMainClassName());
}
+ @Override
public String suggestActionName() {
String name = myConfiguration.getPersistentData().MAIN_CLASS_NAME;
if (name != null && name.endsWith(".")) {
@@ -52,10 +51,12 @@ class TestClass extends TestObject {
return JavaExecutionUtil.getShortClassName(name);
}
+ @Override
public RefactoringElementListener getListener(final PsiElement element, final JUnitConfiguration configuration) {
return RefactoringListeners.getClassOrPackageListener(element, configuration.myClass);
}
+ @Override
public boolean isConfiguredByElement(final JUnitConfiguration configuration,
PsiClass testClass,
PsiMethod testMethod,
@@ -72,6 +73,7 @@ class TestClass extends TestObject {
return Comparing.equal(JavaExecutionUtil.getRuntimeQualifiedName(testClass), configuration.getPersistentData().getMainClassName());
}
+ @Override
public void checkConfiguration() throws RuntimeConfigurationException {
super.checkConfiguration();
final String testClassName = myConfiguration.getPersistentData().getMainClassName();
diff --git a/plugins/junit/src/com/intellij/execution/junit/TestDirectory.java b/plugins/junit/src/com/intellij/execution/junit/TestDirectory.java
index 843e81e457a6..d0a9e2f0881e 100644
--- a/plugins/junit/src/com/intellij/execution/junit/TestDirectory.java
+++ b/plugins/junit/src/com/intellij/execution/junit/TestDirectory.java
@@ -40,20 +40,15 @@ import java.util.Collection;
* Date: 4/21/11
*/
class TestDirectory extends TestPackage {
- private final Project myProject;
-
- public TestDirectory(Project project,
- JUnitConfiguration configuration,
- ExecutionEnvironment environment) {
- super(project, configuration, environment);
- myProject = project;
+ public TestDirectory(JUnitConfiguration configuration, ExecutionEnvironment environment) {
+ super(configuration, environment);
}
@Override
public SourceScope getSourceScope() {
final String dirName = myConfiguration.getPersistentData().getDirName();
final VirtualFile file = LocalFileSystem.getInstance().findFileByPath(FileUtil.toSystemIndependentName(dirName));
- final GlobalSearchScope globalSearchScope = file == null ? GlobalSearchScope.EMPTY_SCOPE : GlobalSearchScopesCore.directoryScope(myProject, file, true);
+ final GlobalSearchScope globalSearchScope = file == null ? GlobalSearchScope.EMPTY_SCOPE : GlobalSearchScopesCore.directoryScope(myEnvironment.getProject(), file, true);
return new SourceScope() {
@Override
public GlobalSearchScope getGlobalSearchScope() {
@@ -62,13 +57,13 @@ class TestDirectory extends TestPackage {
@Override
public Project getProject() {
- return myProject;
+ return myEnvironment.getProject();
}
@Override
public GlobalSearchScope getLibrariesScope() {
final Module module = myConfiguration.getConfigurationModule().getModule();
- return module != null ? GlobalSearchScope.moduleWithLibrariesScope(module) : GlobalSearchScope.allScope(myProject);
+ return module != null ? GlobalSearchScope.moduleWithLibrariesScope(module) : GlobalSearchScope.allScope(myEnvironment.getProject());
}
@Override
@@ -104,7 +99,7 @@ class TestDirectory extends TestPackage {
if (file == null) {
throw new CantRunException("Directory \'" + dirName + "\' is not found");
}
- final PsiDirectory directory = PsiManager.getInstance(myProject).findDirectory(file);
+ final PsiDirectory directory = PsiManager.getInstance(myEnvironment.getProject()).findDirectory(file);
if (directory == null) {
throw new CantRunException("Directory \'" + dirName + "\' is not found");
}
@@ -119,10 +114,10 @@ class TestDirectory extends TestPackage {
public boolean isConfiguredByElement(JUnitConfiguration configuration,
PsiClass testClass,
PsiMethod testMethod,
- PsiPackage testPackage,
+ PsiPackage testPackage,
PsiDirectory testDir) {
if (JUnitConfiguration.TEST_DIRECTORY.equals(configuration.getPersistentData().TEST_OBJECT) && testDir != null) {
- if (Comparing.strEqual(FileUtil.toSystemIndependentName(configuration.getPersistentData().getDirName()),
+ if (Comparing.strEqual(FileUtil.toSystemIndependentName(configuration.getPersistentData().getDirName()),
testDir.getVirtualFile().getPath())) {
return true;
}
diff --git a/plugins/junit/src/com/intellij/execution/junit/TestMethod.java b/plugins/junit/src/com/intellij/execution/junit/TestMethod.java
index 23d798314197..21817210e4d8 100644
--- a/plugins/junit/src/com/intellij/execution/junit/TestMethod.java
+++ b/plugins/junit/src/com/intellij/execution/junit/TestMethod.java
@@ -31,12 +31,11 @@ import com.intellij.rt.execution.junit.JUnitStarter;
import org.jetbrains.annotations.NotNull;
class TestMethod extends TestObject {
- public TestMethod(final Project project,
- final JUnitConfiguration configuration,
- ExecutionEnvironment environment) {
- super(project, configuration, environment);
+ public TestMethod(JUnitConfiguration configuration, ExecutionEnvironment environment) {
+ super(configuration, environment);
}
+ @Override
protected void initialize() throws ExecutionException {
defaultInitialize();
final JUnitConfiguration.Data data = myConfiguration.getPersistentData();
@@ -66,16 +65,20 @@ class TestMethod extends TestObject {
myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT3_PARAMETER);
}
+ @Override
public String suggestActionName() {
return ProgramRunnerUtil.shortenName(myConfiguration.getPersistentData().METHOD_NAME, 2) + "()";
}
+ @Override
public RefactoringElementListener getListener(final PsiElement element, final JUnitConfiguration configuration) {
if (element instanceof PsiMethod) {
final PsiMethod method = (PsiMethod)element;
if (!method.getName().equals(configuration.getPersistentData().getMethodName())) return null;
+ //noinspection ConstantConditions
if (!method.getContainingClass().equals(configuration.myClass.getPsiElement())) return null;
class Listener extends RefactoringElementAdapter implements UndoRefactoringElementListener {
+ @Override
public void elementRenamedOrMoved(@NotNull final PsiElement newElement) {
final boolean generatedName = configuration.isGeneratedName();
configuration.getPersistentData().setTestMethod(PsiLocation.fromPsiElement((PsiMethod)newElement));
@@ -99,6 +102,7 @@ class TestMethod extends TestObject {
}
+ @Override
public boolean isConfiguredByElement(final JUnitConfiguration configuration,
PsiClass testClass,
PsiMethod testMethod,
@@ -118,6 +122,7 @@ class TestMethod extends TestObject {
Comparing.equal(testMethod.getName(), data.getMethodName());
}
+ @Override
public void checkConfiguration() throws RuntimeConfigurationException {
super.checkConfiguration();
final JavaRunConfigurationModule configurationModule = myConfiguration.getConfigurationModule();
diff --git a/plugins/junit/src/com/intellij/execution/junit/TestMethods.java b/plugins/junit/src/com/intellij/execution/junit/TestMethods.java
index a526abb6a7ea..9f6a114e9cfe 100644
--- a/plugins/junit/src/com/intellij/execution/junit/TestMethods.java
+++ b/plugins/junit/src/com/intellij/execution/junit/TestMethods.java
@@ -35,23 +35,25 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.util.Function;
+import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.LinkedHashSet;
public class TestMethods extends TestMethod {
- private static final Logger LOG = Logger.getInstance("#com.intellij.execution.junit.TestMethods");
+ private static final Logger LOG = Logger.getInstance(TestMethods.class);
private final Collection<AbstractTestProxy> myFailedTests;
- public TestMethods(final Project project,
- final JUnitConfiguration configuration,
- ExecutionEnvironment environment,
- Collection<AbstractTestProxy> failedTests) {
- super(project, configuration, environment);
+ public TestMethods(@NotNull JUnitConfiguration configuration,
+ @NotNull ExecutionEnvironment environment,
+ @NotNull Collection<AbstractTestProxy> failedTests) {
+ super(configuration, environment);
+
myFailedTests = failedTests;
}
+ @Override
protected void initialize() throws ExecutionException {
defaultInitialize();
final JUnitConfiguration.Data data = myConfiguration.getPersistentData();
@@ -59,6 +61,7 @@ public class TestMethods extends TestMethod {
final Project project = module.getProject();
final ExecutionException[] exception = new ExecutionException[1];
ApplicationManager.getApplication().runReadAction(new Runnable() {
+ @Override
public void run() {
try {
myConfiguration.configureClasspath(myJavaParameters);
@@ -76,17 +79,17 @@ public class TestMethods extends TestMethod {
if (location instanceof PsiMemberParameterizedLocation) {
final PsiElement element = location.getPsiElement();
if (element instanceof PsiMethod) {
- location = MethodLocation.elementInClass(((PsiMethod)element),
+ location = MethodLocation.elementInClass(((PsiMethod)element),
((PsiMemberParameterizedLocation)location).getContainingClass());
}
}
if (!(location instanceof MethodLocation)) continue;
PsiElement psiElement = location.getPsiElement();
LOG.assertTrue(psiElement instanceof PsiMethod);
- PsiMethod method = (PsiMethod)psiElement;
methods.add(((TestProxy)failedTest).getInfo());
}
addClassesListToJavaParameters(methods, new Function<TestInfo, String>() {
+ @Override
public String fun(TestInfo testInfo) {
if (testInfo != null) {
final MethodLocation location = (MethodLocation)testInfo.getLocation(project, searchScope);
@@ -99,6 +102,7 @@ public class TestMethods extends TestMethod {
}
+ @Override
public String suggestActionName() {
return ActionsBundle.message("action.RerunFailedTests.text");
}
diff --git a/plugins/junit/src/com/intellij/execution/junit/TestObject.java b/plugins/junit/src/com/intellij/execution/junit/TestObject.java
index cc7c0ee66b74..e1b74d5452ef 100644
--- a/plugins/junit/src/com/intellij/execution/junit/TestObject.java
+++ b/plugins/junit/src/com/intellij/execution/junit/TestObject.java
@@ -39,7 +39,6 @@ import com.intellij.execution.testframework.*;
import com.intellij.execution.testframework.sm.SMTestRunnerConnectionUtil;
import com.intellij.execution.testframework.sm.runner.SMTRunnerConsoleProperties;
import com.intellij.execution.testframework.sm.runner.ui.SMTRunnerConsoleView;
-import com.intellij.execution.testframework.ui.BaseTestsOutputConsoleView;
import com.intellij.execution.ui.ConsoleView;
import com.intellij.execution.ui.ConsoleViewContentType;
import com.intellij.execution.util.JavaParametersUtil;
@@ -49,7 +48,6 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
-import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.JavaSdkType;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.ex.JavaSdkUtil;
@@ -81,13 +79,12 @@ import java.io.PrintWriter;
import java.util.*;
public abstract class TestObject implements JavaCommandLine {
- protected static final Logger LOG = Logger.getInstance("#com.intellij.execution.junit.TestObject");
+ protected static final Logger LOG = Logger.getInstance(TestObject.class);
private static final String MESSAGE = ExecutionBundle.message("configuration.not.speficied.message");
@NonNls private static final String JUNIT_TEST_FRAMEWORK_NAME = "JUnit";
protected JavaParameters myJavaParameters;
- private final Project myProject;
protected final JUnitConfiguration myConfiguration;
protected final ExecutionEnvironment myEnvironment;
protected File myTempFile = null;
@@ -95,26 +92,25 @@ public abstract class TestObject implements JavaCommandLine {
public File myListenersFile;
public static TestObject fromString(final String id,
- final Project project,
final JUnitConfiguration configuration,
- ExecutionEnvironment environment) {
+ @NotNull ExecutionEnvironment environment) {
if (JUnitConfiguration.TEST_METHOD.equals(id)) {
- return new TestMethod(project, configuration, environment);
+ return new TestMethod(configuration, environment);
}
if (JUnitConfiguration.TEST_CLASS.equals(id)) {
- return new TestClass(project, configuration, environment);
+ return new TestClass(configuration, environment);
}
if (JUnitConfiguration.TEST_PACKAGE.equals(id)){
- return new TestPackage(project, configuration, environment);
+ return new TestPackage(configuration, environment);
}
if (JUnitConfiguration.TEST_DIRECTORY.equals(id)) {
- return new TestDirectory(project, configuration, environment);
+ return new TestDirectory(configuration, environment);
}
if (JUnitConfiguration.TEST_CATEGORY.equals(id)) {
- return new TestCategory(project, configuration, environment);
+ return new TestCategory(configuration, environment);
}
if (JUnitConfiguration.TEST_PATTERN.equals(id)) {
- return new TestsPattern(project, configuration, environment);
+ return new TestsPattern(configuration, environment);
}
return NOT_CONFIGURED;
}
@@ -124,10 +120,7 @@ public abstract class TestObject implements JavaCommandLine {
return sourceScope != null ? sourceScope.getModulesToCompile() : Module.EMPTY_ARRAY;
}
- protected TestObject(final Project project,
- final JUnitConfiguration configuration,
- ExecutionEnvironment environment) {
- myProject = project;
+ protected TestObject(JUnitConfiguration configuration, ExecutionEnvironment environment) {
myConfiguration = configuration;
myEnvironment = environment;
}
@@ -143,7 +136,7 @@ public abstract class TestObject implements JavaCommandLine {
public abstract boolean isConfiguredByElement(JUnitConfiguration configuration,
PsiClass testClass,
PsiMethod testMethod,
- PsiPackage testPackage,
+ PsiPackage testPackage,
PsiDirectory testDir);
protected void configureModule(final JavaParameters parameters, final RunConfigurationModule configurationModule, final String mainClassName)
@@ -153,7 +146,7 @@ public abstract class TestObject implements JavaCommandLine {
myConfiguration.isAlternativeJrePathEnabled() ? myConfiguration.getAlternativeJrePath() : null);
}
- private static final TestObject NOT_CONFIGURED = new TestObject(null, null, null) {
+ private static final TestObject NOT_CONFIGURED = new TestObject(null, null) {
@Override
public RefactoringElementListener getListener(final PsiElement element, final JUnitConfiguration configuration) {
return null;
@@ -212,14 +205,10 @@ public abstract class TestObject implements JavaCommandLine {
if (myJavaParameters.getJdk() == null){
myJavaParameters.setJdk(module != null
? ModuleRootManager.getInstance(module).getSdk()
- : ProjectRootManager.getInstance(myProject).getProjectSdk());
+ : ProjectRootManager.getInstance(myEnvironment.getProject()).getProjectSdk());
}
- myJavaParameters.getClassPath().add(JavaSdkUtil.getIdeaRtJarPath());
- myJavaParameters.getClassPath().add(PathUtil.getJarPathForClass(JUnitStarter.class));
- if (Registry.is("junit_sm_runner")) {
- myJavaParameters.getClassPath().add(PathUtil.getJarPathForClass(ServiceMessageTypes.class));
- }
+ configureAdditionalClasspath(myJavaParameters);
myJavaParameters.getProgramParametersList().add(JUnitStarter.IDE_VERSION + JUnitStarter.VERSION);
if (!StringUtil.isEmptyOrSpaces(parameters)) {
myJavaParameters.getProgramParametersList().add("@name" + parameters);
@@ -257,6 +246,14 @@ public abstract class TestObject implements JavaCommandLine {
}
}
+ private void configureAdditionalClasspath(JavaParameters javaParameters) {
+ javaParameters.getClassPath().add(JavaSdkUtil.getIdeaRtJarPath());
+ javaParameters.getClassPath().add(PathUtil.getJarPathForClass(JUnitStarter.class));
+ if (Registry.is("junit_sm_runner")) {
+ javaParameters.getClassPath().add(PathUtil.getJarPathForClass(ServiceMessageTypes.class));
+ }
+ }
+
@Override
public JavaParameters getJavaParameters() throws ExecutionException {
if (myJavaParameters == null) {
@@ -368,8 +365,7 @@ public abstract class TestObject implements JavaCommandLine {
}
});
- final RerunFailedTestsAction rerunFailedTestsAction = new RerunFailedTestsAction(consoleView);
- rerunFailedTestsAction.init(consoleProperties, myEnvironment);
+ final RerunFailedTestsAction rerunFailedTestsAction = new RerunFailedTestsAction(consoleView, consoleProperties);
rerunFailedTestsAction.setModelProvider(new Getter<TestFrameworkRunningModel>() {
@Override
public TestFrameworkRunningModel get() {
@@ -384,22 +380,15 @@ public abstract class TestObject implements JavaCommandLine {
private ExecutionResult useSmRunner(Executor executor, JUnitProcessHandler handler) {
TestConsoleProperties testConsoleProperties = new SMTRunnerConsoleProperties(myConfiguration, JUNIT_TEST_FRAMEWORK_NAME, executor);
-
testConsoleProperties.setIfUndefined(TestConsoleProperties.HIDE_PASSED_TESTS, false);
- BaseTestsOutputConsoleView smtConsoleView = SMTestRunnerConnectionUtil.createConsoleWithCustomLocator(
+ final ConsoleView consoleView = SMTestRunnerConnectionUtil.createConsoleWithCustomLocator(
JUNIT_TEST_FRAMEWORK_NAME,
testConsoleProperties,
myEnvironment, null);
-
-
- Disposer.register(myProject, smtConsoleView);
-
- final ConsoleView consoleView = smtConsoleView;
consoleView.attachToProcess(handler);
- final RerunFailedTestsAction rerunFailedTestsAction = new RerunFailedTestsAction(consoleView);
- rerunFailedTestsAction.init(testConsoleProperties, myEnvironment);
+ RerunFailedTestsAction rerunFailedTestsAction = new RerunFailedTestsAction(consoleView, testConsoleProperties);
rerunFailedTestsAction.setModelProvider(new Getter<TestFrameworkRunningModel>() {
@Override
public TestFrameworkRunningModel get() {
@@ -421,12 +410,12 @@ public abstract class TestObject implements JavaCommandLine {
else {
comment = null;
}
- TestsUIUtil.notifyByBalloon(myProject, started, model != null ? model.getRoot() : null, consoleProperties, comment);
+ TestsUIUtil.notifyByBalloon(myEnvironment.getProject(), started, model != null ? model.getRoot() : null, consoleProperties, comment);
}
protected JUnitProcessHandler createHandler(Executor executor) throws ExecutionException {
appendForkInfo(executor);
- return JUnitProcessHandler.runCommandLine(CommandLineBuilder.createFromJavaParameters(myJavaParameters, myProject, true));
+ return JUnitProcessHandler.runCommandLine(CommandLineBuilder.createFromJavaParameters(myJavaParameters, myEnvironment.getProject(), true));
}
private boolean forkPerModule() {
@@ -439,17 +428,18 @@ public abstract class TestObject implements JavaCommandLine {
private void appendForkInfo(Executor executor) throws ExecutionException {
final String forkMode = myConfiguration.getForkMode();
if (Comparing.strEqual(forkMode, "none")) {
- if (forkPerModule() && getRunnerSettings() != null) {
- final String actionName = UIUtil.removeMnemonic(executor.getStartActionText());
- throw new CantRunException("'" + actionName + "' is disabled when per-module working directory is configured.<br/>" +
- "Please specify single working directory, or change test scope to single module.");
+ if (forkPerModule()) {
+ if (getRunnerSettings() != null) {
+ final String actionName = UIUtil.removeMnemonic(executor.getStartActionText());
+ throw new CantRunException("'" + actionName + "' is disabled when per-module working directory is configured.<br/>" +
+ "Please specify single working directory, or change test scope to single module.");
+ }
+ } else {
+ return;
}
- return;
- }
-
- if (getRunnerSettings() != null) {
+ } else if (getRunnerSettings() != null) {
final String actionName = executor.getActionName();
- throw new CantRunException(actionName + " is disabled in fork mode.<br/>Please change fork mode to &lt;none&gt; to " + actionName.toLowerCase() + ".");
+ throw new CantRunException(actionName + " is disabled in fork mode.<br/>Please change fork mode to &lt;none&gt; to " + actionName.toLowerCase(Locale.ENGLISH) + ".");
}
final JavaParameters javaParameters = getJavaParameters();
@@ -482,65 +472,71 @@ public abstract class TestObject implements JavaCommandLine {
protected <T> void addClassesListToJavaParameters(Collection<? extends T> elements, Function<T, String> nameFunction, String packageName,
boolean createTempFile,
- boolean junit4) {
+ boolean junit4) throws CantRunException {
try {
if (createTempFile) {
createTempFiles();
}
- final Map<String, List<String>> perModule = forkPerModule() ? new TreeMap<String, List<String>>() : null;
- final PrintWriter writer = new PrintWriter(myTempFile, CharsetToolkit.UTF8);
- try {
- writer.println(packageName);
- final JUnitConfiguration.Data data = myConfiguration.getPersistentData();
- final String category = data.TEST_OBJECT == JUnitConfiguration.TEST_CATEGORY ? data.getCategory() : "";
- writer.println(category);
- final List<String> testNames = new ArrayList<String>();
- for (final T element : elements) {
- final String name = nameFunction.fun(element);
- if (name == null) {
- LOG.error("invalid element " + element);
- return;
- }
+ final Map<Module, List<String>> perModule = forkPerModule() ? new TreeMap<Module, List<String>>(new Comparator<Module>() {
+ @Override
+ public int compare(Module o1, Module o2) {
+ return StringUtil.compare(o1.getName(), o2.getName(), true);
+ }
+ }) : null;
+
+ final List<String> testNames = new ArrayList<String>();
+
+ for (final T element : elements) {
+ final String name = nameFunction.fun(element);
+ if (name == null) {
+ LOG.error("invalid element " + element);
+ return;
+ }
- if (perModule != null && element instanceof PsiElement) {
- final Module module = ModuleUtilCore.findModuleForPsiElement((PsiElement)element);
- if (module != null) {
- final String moduleDir = PathMacroUtil.getModuleDir(module.getModuleFilePath());
- List<String> list = perModule.get(moduleDir);
- if (list == null) {
- list = new ArrayList<String>();
- perModule.put(moduleDir, list);
- }
- list.add(name);
+ if (perModule != null && element instanceof PsiElement) {
+ final Module module = ModuleUtilCore.findModuleForPsiElement((PsiElement)element);
+ if (module != null) {
+ List<String> list = perModule.get(module);
+ if (list == null) {
+ list = new ArrayList<String>();
+ perModule.put(module, list);
}
- } else {
- testNames.add(name);
+ list.add(name);
}
}
- if (perModule != null) {
- for (List<String> perModuleClasses : perModule.values()) {
- Collections.sort(perModuleClasses);
- testNames.addAll(perModuleClasses);
- }
- } else {
- Collections.sort(testNames); //sort tests in FQN order
+ else {
+ testNames.add(name);
}
- for (String testName : testNames) {
- writer.println(testName);
+ }
+ if (perModule != null) {
+ for (List<String> perModuleClasses : perModule.values()) {
+ Collections.sort(perModuleClasses);
+ testNames.addAll(perModuleClasses);
}
}
- finally {
- writer.close();
+ else {
+ Collections.sort(testNames); //sort tests in FQN order
}
+ final JUnitConfiguration.Data data = myConfiguration.getPersistentData();
+ final String category = data.TEST_OBJECT == JUnitConfiguration.TEST_CATEGORY ? data.getCategory() : "";
+ JUnitStarter.printClassesList(testNames, packageName, category, myTempFile);
+
if (perModule != null && perModule.size() > 1) {
final PrintWriter wWriter = new PrintWriter(myWorkingDirsFile, CharsetToolkit.UTF8);
try {
wWriter.println(packageName);
- for (String workingDir : perModule.keySet()) {
- wWriter.println(workingDir);
- final List<String> classNames = perModule.get(workingDir);
+ for (Module module : perModule.keySet()) {
+ final String moduleDir = PathMacroUtil.getModuleDir(module.getModuleFilePath());
+ wWriter.println(moduleDir);
+
+ final JavaParameters parameters = new JavaParameters();
+ JavaParametersUtil.configureModule(module, parameters, JavaParameters.JDK_AND_CLASSES_AND_TESTS,
+ myConfiguration.isAlternativeJrePathEnabled() ? myConfiguration.getAlternativeJrePath() : null);
+ configureAdditionalClasspath(parameters);
+ wWriter.println(parameters.getClassPath().getPathsString());
+ final List<String> classNames = perModule.get(module);
wWriter.println(classNames.size());
for (String className : classNames) {
wWriter.println(className);
diff --git a/plugins/junit/src/com/intellij/execution/junit/TestPackage.java b/plugins/junit/src/com/intellij/execution/junit/TestPackage.java
index 3d3c2da89143..6bde0b4419dd 100644
--- a/plugins/junit/src/com/intellij/execution/junit/TestPackage.java
+++ b/plugins/junit/src/com/intellij/execution/junit/TestPackage.java
@@ -27,7 +27,6 @@ import com.intellij.execution.process.ProcessAdapter;
import com.intellij.execution.process.ProcessEvent;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.ExecutionEnvironmentBuilder;
-import com.intellij.execution.runners.ExecutionUtil;
import com.intellij.execution.testframework.SourceScope;
import com.intellij.execution.testframework.TestSearchScope;
import com.intellij.openapi.application.ApplicationManager;
@@ -71,13 +70,10 @@ public class TestPackage extends TestObject {
protected ServerSocket myServerSocket;
private boolean myFoundTests = true;
- public TestPackage(final Project project,
- final JUnitConfiguration configuration,
- ExecutionEnvironment environment) {
- super(project, configuration, environment);
+ public TestPackage(JUnitConfiguration configuration, ExecutionEnvironment environment) {
+ super(configuration, environment);
}
-
@Override
public SourceScope getSourceScope() {
final JUnitConfiguration.Data data = myConfiguration.getPersistentData();
diff --git a/plugins/junit/src/com/intellij/execution/junit/TestsPattern.java b/plugins/junit/src/com/intellij/execution/junit/TestsPattern.java
index 7277c5e5369d..a017cb1b8e9d 100644
--- a/plugins/junit/src/com/intellij/execution/junit/TestsPattern.java
+++ b/plugins/junit/src/com/intellij/execution/junit/TestsPattern.java
@@ -48,10 +48,8 @@ import java.util.LinkedHashSet;
import java.util.Set;
public class TestsPattern extends TestPackage {
- public TestsPattern(final Project project,
- final JUnitConfiguration configuration,
- ExecutionEnvironment environment) {
- super(project, configuration, environment);
+ public TestsPattern(JUnitConfiguration configuration, ExecutionEnvironment environment) {
+ super(configuration, environment);
}
@Override
@@ -119,7 +117,7 @@ public class TestsPattern extends TestPackage {
? className.substring(0, className.indexOf(','))
: className).trim(), GlobalSearchScope.allScope(project));
}
-
+
protected void configureClasspath() throws CantRunException {
final String jreHome = myConfiguration.isAlternativeJrePathEnabled() ? myConfiguration.getAlternativeJrePath() : null;