diff options
Diffstat (limited to 'plugins/junit/src/com/intellij/execution')
16 files changed, 244 insertions, 178 deletions
diff --git a/plugins/junit/src/com/intellij/execution/ConfigurationUtil.java b/plugins/junit/src/com/intellij/execution/ConfigurationUtil.java index 274c2797540d..3d8da3aac313 100644 --- a/plugins/junit/src/com/intellij/execution/ConfigurationUtil.java +++ b/plugins/junit/src/com/intellij/execution/ConfigurationUtil.java @@ -95,7 +95,13 @@ public class ConfigurationUtil { //allScope is used to find all abstract test cases which probably have inheritors in the current 'scope' AnnotatedMembersSearch.search(testAnnotation, GlobalSearchScope.allScope(manager.getProject())).forEach(new Processor<PsiMember>() { public boolean process(final PsiMember annotated) { - final PsiClass containingClass = annotated instanceof PsiClass ? (PsiClass)annotated : annotated.getContainingClass(); + final PsiClass containingClass = annotated instanceof PsiClass ? (PsiClass)annotated : ApplicationManager.getApplication() + .runReadAction(new Computable<PsiClass>() { + @Override + public PsiClass compute() { + return annotated.getContainingClass(); + } + }); if (containingClass != null && annotated instanceof PsiMethod == isMethod) { if (ApplicationManager.getApplication().runReadAction( new Computable<Boolean>() { 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 <none> to " + actionName.toLowerCase() + "."); + throw new CantRunException(actionName + " is disabled in fork mode.<br/>Please change fork mode to <none> 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; diff --git a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java index 07e578bae6c8..0a2119fb73d2 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java +++ b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java @@ -118,6 +118,7 @@ public class JUnitConfigurable extends SettingsEditor<JUnitConfiguration> implem myModel = new JUnitConfigurationModel(project); myModuleSelector = new ConfigurationModuleSelector(project, getModulesComponent()); myCommonJavaParameters.setModuleContext(myModuleSelector.getModule()); + myCommonJavaParameters.setHasModuleMacro(); myModule.getComponent().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { myCommonJavaParameters.setModuleContext(myModuleSelector.getModule()); diff --git a/plugins/junit/src/com/intellij/execution/junit2/states/ComparisonFailureState.java b/plugins/junit/src/com/intellij/execution/junit2/states/ComparisonFailureState.java index d4ef1319d866..c772936f5d20 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/states/ComparisonFailureState.java +++ b/plugins/junit/src/com/intellij/execution/junit2/states/ComparisonFailureState.java @@ -24,7 +24,7 @@ import com.intellij.execution.ui.ConsoleViewContentType; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NonNls; -public class ComparisonFailureState extends FaultyState implements AbstractTestProxy.AssertEqualsDiffViewerProvider { +public class ComparisonFailureState extends FaultyState implements AbstractTestProxy.AssertEqualsMultiDiffViewProvider { private DiffHyperlink myHyperlink; @NonNls protected static final String EXPECTED_VALUE_MESSAGE_TEXT = "expected:<"; @@ -59,4 +59,19 @@ public class ComparisonFailureState extends FaultyState implements AbstractTestP public void openDiff(final Project project) { if (myHyperlink != null) myHyperlink.openDiff(project); } + + @Override + public void openMultiDiff(Project project, AbstractTestProxy.AssertEqualsDiffChain chain) { + if (myHyperlink != null) { + myHyperlink.openMultiDiff(project, chain); + } + } + + @Override + public String getFilePath() { + if (myHyperlink != null) { + return myHyperlink.getFilePath(); + } + return null; + } } diff --git a/plugins/junit/src/com/intellij/execution/junit2/ui/ConsolePanel.java b/plugins/junit/src/com/intellij/execution/junit2/ui/ConsolePanel.java index 3fe67a6d5e1b..d4102d4df784 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/ui/ConsolePanel.java +++ b/plugins/junit/src/com/intellij/execution/junit2/ui/ConsolePanel.java @@ -41,6 +41,7 @@ import com.intellij.ui.SimpleTextAttributes; import com.intellij.ui.treeStructure.Tree; import com.intellij.util.Alarm; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; @@ -69,25 +70,30 @@ public class ConsolePanel extends TestResultsPanel { myPrinter = printer; } + @Override public void initUI() { super.initUI(); myStartingProgress = new StartingProgress(myTreeView); } + @Override protected JComponent createStatisticsPanel() { myStatisticsPanel = new StatisticsPanel(); return myStatisticsPanel; } + @Override protected ToolbarPanel createToolbarPanel() { return new JUnitToolbarPanel(myProperties, myEnvironment, this); } + @Override protected TestStatusLine createStatusLine() { myStatusLine = new JUnitStatusLine(); return myStatusLine; } + @Override protected JComponent createTestTreeView() { myTreeView = new JUnitTestTreeView(); return myTreeView; @@ -129,6 +135,7 @@ public class ConsolePanel extends TestResultsPanel { return myPrinter; } + @Override public void dispose() { stopStartingProgress(); myPrinter = null; @@ -145,8 +152,10 @@ public class ConsolePanel extends TestResultsPanel { private ProcessHandler myProcess; private long myStartedAt = System.currentTimeMillis(); private final ProcessAdapter myProcessListener = new ProcessAdapter() { + @Override public void processTerminated(ProcessEvent event) { ApplicationManager.getApplication().invokeLater(new Runnable() { + @Override public void run() { doStop(); } @@ -162,7 +171,9 @@ public class ConsolePanel extends TestResultsPanel { myTree.setPaintBusy(true); //myStartingLabel.setBackground(UIManager.getColor("Tree.background")); myTree.setCellRenderer(new TreeCellRenderer() { - public Component getTreeCellRendererComponent(final JTree tree, final Object value, + @NotNull + @Override + public Component getTreeCellRendererComponent(@NotNull final JTree tree, final Object value, final boolean selected, final boolean expanded, final boolean leaf, final int row, final boolean hasFocus) { myStartingLabel.clear(); @@ -173,7 +184,8 @@ public class ConsolePanel extends TestResultsPanel { } }); myTree.addPropertyChangeListener(JTree.TREE_MODEL_PROPERTY, new PropertyChangeListener() { - public void propertyChange(final PropertyChangeEvent evt) { + @Override + public void propertyChange(@NotNull final PropertyChangeEvent evt) { myTree.removePropertyChangeListener(JTree.TREE_MODEL_PROPERTY, this); doStop(); } @@ -189,6 +201,7 @@ public class ConsolePanel extends TestResultsPanel { myProcess = null; } + @Override public void run() { myModel.nodeChanged(myRootNode); postRepaint(); diff --git a/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitStatusLine.java b/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitStatusLine.java index 88a474cd31ab..c7aef3a9a378 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitStatusLine.java +++ b/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitStatusLine.java @@ -17,7 +17,7 @@ package com.intellij.execution.junit2.ui; import com.intellij.execution.ExecutionBundle; -import com.intellij.execution.junit2.*; +import com.intellij.execution.junit2.TestProxy; import com.intellij.execution.junit2.events.NewChildEvent; import com.intellij.execution.junit2.events.StateChangedEvent; import com.intellij.execution.junit2.events.TestEvent; @@ -47,15 +47,17 @@ class JUnitStatusLine extends TestStatusLine { public void onProcessStarted(final ProcessHandler process) { if (myTestsBuilt) return; process.addProcessListener(new ProcessAdapter() { + @Override public void processTerminated(ProcessEvent event) { process.removeProcessListener(this); ApplicationManager.getApplication().invokeLater(new Runnable() { + @Override public void run() { myStateInfo.setTerminated(myState); if (!myTestsBuilt && myProgressBar.getFraction() == 0.0) { myProgressBar.setColor(ColorProgressBar.RED); myProgressBar.setFraction(1.0); - myState.setText(ExecutionBundle.message("junit.runing.info.failed.to.start.error.message")); + myState.setText(ExecutionBundle.message("junit.running.info.failed.to.start.error.message")); } } }); @@ -83,21 +85,21 @@ class JUnitStatusLine extends TestStatusLine { myCurrentTestName = currentTest == null ? "" : Formatters.printTest(currentTest); } - public double getComplitedPercents() { + public double getCompletedPercents() { return (double)myCompleted/(double)myTotal; } public void updateLabel(final JLabel label) { - final StringBuffer buffer = new StringBuffer(); + final StringBuilder buffer = new StringBuilder(); if (myDoneEvent != null && myTerminated) { String termMessage = generateTermMessage(getTestCount(0)); buffer.append(termMessage); final String comment = myDoneEvent.getComment(); if (comment.length() > 0) { - buffer.append(" (" + comment + ")"); + buffer.append(" (").append(comment).append(")"); } } else { - buffer.append(ExecutionBundle.message("junit.runing.info.status.running.number.with.name", getTestCount(myDoneEvent != null ? 0 : 1), myCurrentTestName)); + buffer.append(ExecutionBundle.message("junit.running.info.status.running.number.with.name", getTestCount(myDoneEvent != null ? 0 : 1), myCurrentTestName)); } label.setText(buffer.toString()); } @@ -105,16 +107,16 @@ class JUnitStatusLine extends TestStatusLine { private String getTestCount(int offset) { String testCount; if (myDefects > 0) - testCount = ExecutionBundle.message("junit.runing.info.status.completed.from.total.failed", myCompleted + offset, myTotal, myDefects); // += " Failed: " + myDefects + " "; + testCount = ExecutionBundle.message("junit.running.info.status.completed.from.total.failed", myCompleted + offset, myTotal, myDefects); // += " Failed: " + myDefects + " "; else - testCount = ExecutionBundle.message("junit.runing.info.status.completed.from.total", myCompleted + offset, myTotal); // myCompleted + " of " + myTotal + testCount = ExecutionBundle.message("junit.running.info.status.completed.from.total", myCompleted + offset, myTotal); // myCompleted + " of " + myTotal return testCount; } private String generateTermMessage(final String testCount) { switch(myDoneEvent.getType()) { - case DONE: return ExecutionBundle.message("junit.runing.info.status.done.count", testCount); - default: return ExecutionBundle.message("junit.runing.info.status.terminated.count", testCount); + case DONE: return ExecutionBundle.message("junit.running.info.status.done.count", testCount); + default: return ExecutionBundle.message("junit.running.info.status.terminated.count", testCount); } } @@ -131,6 +133,7 @@ class JUnitStatusLine extends TestStatusLine { myProgress = progress; } + @Override public void onRunnerStateChanged(final StateEvent event) { if (!event.isRunning()) { final CompletionEvent completionEvent = (CompletionEvent) event; @@ -143,18 +146,20 @@ class JUnitStatusLine extends TestStatusLine { } } + @Override public void onTestChanged(final TestEvent event) { if (event instanceof StateChangedEvent || event instanceof NewChildEvent) updateCounters(); } + @Override public void doDispose() { myProgress = null; } private void updateCounters() { myStateInfo.updateCounters(myProgress); - myProgressBar.setFraction(myStateInfo.getComplitedPercents()); + myProgressBar.setFraction(myStateInfo.getCompletedPercents()); if (myProgress.hasDefects()) { myProgressBar.setColor(ColorProgressBar.RED); } diff --git a/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitTreeConsoleView.java b/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitTreeConsoleView.java index b311002027b1..4b879594d262 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitTreeConsoleView.java +++ b/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitTreeConsoleView.java @@ -41,17 +41,20 @@ public class JUnitTreeConsoleView extends BaseTestsOutputConsoleView { myEnvironment = environment; } + @Override protected TestResultsPanel createTestResultsPanel() { myConsolePanel = new ConsolePanel(getConsole().getComponent(), getPrinter(), myProperties, myEnvironment, getConsole().createConsoleActions()); return myConsolePanel; } + @Override public void attachToProcess(final ProcessHandler processHandler) { super.attachToProcess(processHandler); myConsolePanel.onProcessStarted(processHandler); } + @Override public void dispose() { super.dispose(); myConsolePanel = null; diff --git a/plugins/junit/src/com/intellij/execution/junit2/ui/actions/RerunFailedTestsAction.java b/plugins/junit/src/com/intellij/execution/junit2/ui/actions/RerunFailedTestsAction.java index 04c13aa9e6fa..332566b1b3f2 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/ui/actions/RerunFailedTestsAction.java +++ b/plugins/junit/src/com/intellij/execution/junit2/ui/actions/RerunFailedTestsAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,40 +13,38 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.execution.junit2.ui.actions; -import com.intellij.execution.ExecutionException; import com.intellij.execution.Executor; import com.intellij.execution.actions.JavaRerunFailedTestsAction; import com.intellij.execution.configurations.RunProfileState; import com.intellij.execution.junit.JUnitConfiguration; import com.intellij.execution.junit.TestMethods; import com.intellij.execution.runners.ExecutionEnvironment; +import com.intellij.execution.testframework.TestConsoleProperties; import com.intellij.openapi.module.Module; import com.intellij.openapi.ui.ComponentContainer; import org.jetbrains.annotations.NotNull; -/** - * @author Alexey - */ public class RerunFailedTestsAction extends JavaRerunFailedTestsAction { - - public RerunFailedTestsAction(@NotNull ComponentContainer componentContainer) { - super(componentContainer); + public RerunFailedTestsAction(@NotNull ComponentContainer componentContainer, @NotNull TestConsoleProperties consoleProperties) { + super(componentContainer, consoleProperties); } @Override - public MyRunProfile getRunProfile() { + protected MyRunProfile getRunProfile(@NotNull ExecutionEnvironment environment) { + //noinspection ConstantConditions final JUnitConfiguration configuration = (JUnitConfiguration)getModel().getProperties().getConfiguration(); - final TestMethods testMethods = new TestMethods(configuration.getProject(), configuration, myEnvironment, getFailedTests(configuration.getProject())); + final TestMethods testMethods = new TestMethods(configuration, environment, getFailedTests(configuration.getProject())); return new MyRunProfile(configuration) { + @Override @NotNull public Module[] getModules() { return testMethods.getModulesToCompile(); } - public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) throws ExecutionException { + @Override + public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) { testMethods.clear(); return testMethods; } |