From 5d13f8997ea1ff77a38ace9f143a9e68ff170bac Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Fri, 5 Sep 2014 18:11:58 +0200 Subject: [PATCH] =?UTF-8?q?AbstractRerunFailedTestsAction=20=E2=80=94=20ge?= =?UTF-8?q?t=20rid=20of=20static=20registry=20of=20actions,=20don't=20hold?= =?UTF-8?q?=20execution=20environment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/JavaRerunFailedTestsAction.java | 7 +- .../execution/ui/RunContentDescriptor.java | 3 + .../AbstractRerunFailedTestsAction.java | 141 +++++++----------- .../actions/RerunFailedTestsAction.java | 12 ++ .../xdebugger/impl/XDebugSessionImpl.java | 6 + .../execution/junit/JUnitConfiguration.java | 61 ++++++-- .../execution/junit/TestCategory.java | 14 +- .../intellij/execution/junit/TestClass.java | 12 +- .../execution/junit/TestDirectory.java | 21 +-- .../intellij/execution/junit/TestMethod.java | 7 +- .../intellij/execution/junit/TestMethods.java | 13 +- .../intellij/execution/junit/TestObject.java | 51 +++---- .../intellij/execution/junit/TestPackage.java | 8 +- .../execution/junit/TestsPattern.java | 8 +- .../ui/actions/RerunFailedTestsAction.java | 14 +- .../configuration/TestNGRunnableState.java | 26 ++-- .../ui/actions/RerunFailedTestsAction.java | 15 +- python/src/META-INF/pycharm-core.xml | 2 +- .../testing/PyRerunFailedTestsAction.java | 14 +- .../PythonTestCommandLineStateBase.java | 4 +- resources/src/idea/RichPlatformActions.xml | 2 +- 21 files changed, 208 insertions(+), 233 deletions(-) create mode 100644 platform/testRunner/src/com/intellij/execution/testframework/actions/RerunFailedTestsAction.java diff --git a/java/execution/impl/src/com/intellij/execution/actions/JavaRerunFailedTestsAction.java b/java/execution/impl/src/com/intellij/execution/actions/JavaRerunFailedTestsAction.java index 76e7175b87ff..3be2960bfcf7 100644 --- a/java/execution/impl/src/com/intellij/execution/actions/JavaRerunFailedTestsAction.java +++ b/java/execution/impl/src/com/intellij/execution/actions/JavaRerunFailedTestsAction.java @@ -22,6 +22,7 @@ package com.intellij.execution.actions; import com.intellij.execution.testframework.Filter; import com.intellij.execution.testframework.JavaAwareFilter; +import com.intellij.execution.testframework.TestConsoleProperties; import com.intellij.execution.testframework.actions.AbstractRerunFailedTestsAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ComponentContainer; @@ -29,9 +30,10 @@ import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.annotations.NotNull; public class JavaRerunFailedTestsAction extends AbstractRerunFailedTestsAction { - - protected JavaRerunFailedTestsAction(@NotNull ComponentContainer componentContainer) { + public JavaRerunFailedTestsAction(@NotNull ComponentContainer componentContainer, @NotNull TestConsoleProperties consoleProperties) { super(componentContainer); + + init(consoleProperties); } @NotNull @@ -39,5 +41,4 @@ public class JavaRerunFailedTestsAction extends AbstractRerunFailedTestsAction { protected Filter getFilter(Project project, GlobalSearchScope searchScope) { return super.getFilter(project, searchScope).and(JavaAwareFilter.METHOD(project, searchScope)); } - } diff --git a/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java b/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java index 60e7f03d54db..71000f41f661 100644 --- a/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java +++ b/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java @@ -81,6 +81,8 @@ public class RunContentDescriptor implements Disposable { } myComponent = null; myRestarter = null; + myProcessHandler = null; + myContent = null; } /** @@ -127,6 +129,7 @@ public class RunContentDescriptor implements Disposable { myContent = content; } + @SuppressWarnings("UnusedDeclaration") @Nullable @Deprecated /** diff --git a/platform/testRunner/src/com/intellij/execution/testframework/actions/AbstractRerunFailedTestsAction.java b/platform/testRunner/src/com/intellij/execution/testframework/actions/AbstractRerunFailedTestsAction.java index 5f7bfc22c8fd..efbfa4175814 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/actions/AbstractRerunFailedTestsAction.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/actions/AbstractRerunFailedTestsAction.java @@ -34,20 +34,20 @@ import com.intellij.execution.testframework.Filter; import com.intellij.execution.testframework.TestConsoleProperties; import com.intellij.execution.testframework.TestFrameworkRunningModel; import com.intellij.idea.ActionsBundle; -import com.intellij.openapi.Disposable; -import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.actionSystem.ActionManager; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ComponentContainer; import com.intellij.openapi.ui.popup.JBPopupFactory; -import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Getter; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.ui.components.JBList; -import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.UIUtil; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -57,42 +57,23 @@ import javax.swing.*; import java.awt.*; import java.awt.event.InputEvent; import java.awt.event.MouseEvent; -import java.util.*; +import java.util.Collections; +import java.util.LinkedHashMap; import java.util.List; -public class AbstractRerunFailedTestsAction extends AnAction implements AnAction.TransparentUpdate, Disposable { - private static final Logger LOG = Logger.getInstance("#com.intellij.execution.junit2.ui.actions.RerunFailedTestsAction"); - - private static final List REGISTRY = ContainerUtil.createLockFreeCopyOnWriteList(); +public class AbstractRerunFailedTestsAction extends AnAction implements AnAction.TransparentUpdate { + private static final Logger LOG = Logger.getInstance(AbstractRerunFailedTestsAction.class); private TestFrameworkRunningModel myModel; private Getter myModelProvider; protected TestConsoleProperties myConsoleProperties; - protected ExecutionEnvironment myEnvironment; - private final JComponent myParent; - - @SuppressWarnings("UnusedDeclaration") - public AbstractRerunFailedTestsAction() { - //We call this constructor with a little help from reflection. - myParent = null; - } protected AbstractRerunFailedTestsAction(@NotNull ComponentContainer componentContainer) { - myParent = componentContainer.getComponent(); - REGISTRY.add(this); - Disposer.register(componentContainer, this); copyFrom(ActionManager.getInstance().getAction("RerunFailedTests")); - registerCustomShortcutSet(getShortcutSet(), myParent); + registerCustomShortcutSet(getShortcutSet(), componentContainer.getComponent()); } - @Override - public void dispose() { - REGISTRY.remove(this); - } - - public void init(final TestConsoleProperties consoleProperties, - final ExecutionEnvironment environment) { - myEnvironment = environment; + public void init(TestConsoleProperties consoleProperties) { myConsoleProperties = consoleProperties; } @@ -104,44 +85,21 @@ public class AbstractRerunFailedTestsAction extends AnAction implements AnAction myModelProvider = modelProvider; } - @NotNull - private AbstractRerunFailedTestsAction findActualAction() { - if (myParent != null || REGISTRY.isEmpty()) - return this; - List candidates = new ArrayList(REGISTRY); - Collections.sort(candidates, new Comparator() { - @Override - public int compare(@NotNull AbstractRerunFailedTestsAction action1, @NotNull AbstractRerunFailedTestsAction action2) { - Window window1 = SwingUtilities.windowForComponent(action1.myParent); - Window window2 = SwingUtilities.windowForComponent(action2.myParent); - if (window1 == null) - return 1; - if (window2 == null) - return -1; - boolean showing1 = action1.myParent.isShowing(); - boolean showing2 = action2.myParent.isShowing(); - if (showing1 && !showing2) - return -1; - if (showing2 && !showing1) - return 1; - return (window1.isActive() ? -1 : 1); - } - }); - return candidates.get(0); - } - @Override public final void update(@NotNull AnActionEvent e) { - AbstractRerunFailedTestsAction action = findActualAction(); - e.getPresentation().setEnabled(action.isActive(e)); + e.getPresentation().setEnabled(isActive(e)); } private boolean isActive(AnActionEvent e) { - DataContext dataContext = e.getDataContext(); - Project project = CommonDataKeys.PROJECT.getData(dataContext); - if (project == null) return false; + Project project = e.getProject(); + if (project == null) { + return false; + } + TestFrameworkRunningModel model = getModel(); - if (model == null || model.getRoot() == null) return false; + if (model == null || model.getRoot() == null) { + return false; + } Filter filter = getFailuresFilter(); for (AbstractTestProxy test : model.getRoot().getAllTests()) { //noinspection unchecked @@ -175,29 +133,26 @@ public class AbstractRerunFailedTestsAction extends AnAction implements AnAction @Override public void actionPerformed(@NotNull AnActionEvent e) { - findActualAction().showPopup(e); - } + ExecutionEnvironment environment = e.getData(LangDataKeys.EXECUTION_ENVIRONMENT); + if (environment == null) { + return; + } - private void showPopup(AnActionEvent e) { - boolean isDebug = myConsoleProperties.isDebug(); - final MyRunProfile profile = getRunProfile(); + MyRunProfile profile = getRunProfile(environment); if (profile == null) { return; } - final Executor executor = isDebug ? DefaultDebugExecutor.getDebugExecutorInstance() : DefaultRunExecutor.getRunExecutorInstance(); + final ExecutionEnvironmentBuilder environmentBuilder = new ExecutionEnvironmentBuilder(environment).runProfile(profile); final InputEvent event = e.getInputEvent(); if (!(event instanceof MouseEvent) || !event.isShiftDown()) { - final ProgramRunner runner = RunnerRegistry.getInstance().getRunner(executor.getId(), profile); - LOG.assertTrue(runner != null); - performAction(runner, profile, myEnvironment.getExecutor()); + performAction(environmentBuilder); return; } final LinkedHashMap availableRunners = new LinkedHashMap(); - final Executor[] executors = new Executor[] {DefaultRunExecutor.getRunExecutorInstance(), DefaultDebugExecutor.getDebugExecutorInstance()}; - for (Executor ex : executors) { + for (Executor ex : new Executor[] {DefaultRunExecutor.getRunExecutorInstance(), DefaultDebugExecutor.getDebugExecutorInstance()}) { final ProgramRunner runner = RunnerRegistry.getInstance().getRunner(ex.getId(), profile); if (runner != null) { availableRunners.put(ex, runner); @@ -205,16 +160,16 @@ public class AbstractRerunFailedTestsAction extends AnAction implements AnAction } if (availableRunners.isEmpty()) { - LOG.error(executor.getActionName() + " is not available now"); - return; + LOG.error(environment.getExecutor().getActionName() + " is not available now"); } - - if (availableRunners.size() == 1) { - performAction(availableRunners.get(executor), profile, executor); - } else { + else if (availableRunners.size() == 1) { + //noinspection ConstantConditions + performAction(environmentBuilder.runner(availableRunners.get(environment.getExecutor()))); + } + else { final JBList list = new JBList(availableRunners.keySet()); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - list.setSelectedValue(executor, true); + list.setSelectedValue(environment.getExecutor(), true); list.setCellRenderer(new DefaultListCellRenderer() { @NotNull @Override @@ -227,6 +182,7 @@ public class AbstractRerunFailedTestsAction extends AnAction implements AnAction return component; } }); + //noinspection ConstantConditions JBPopupFactory.getInstance().createListPopupBuilder(list) .setTitle("Restart Failed Tests") .setMovable(false) @@ -237,34 +193,38 @@ public class AbstractRerunFailedTestsAction extends AnAction implements AnAction public void run() { final Object value = list.getSelectedValue(); if (value instanceof Executor) { - performAction(availableRunners.get(value), profile, (Executor)value); + //noinspection ConstantConditions + performAction(environmentBuilder.runner(availableRunners.get(value)).executor((Executor)value)); } } }).createPopup().showUnderneathOf(event.getComponent()); } } - private void performAction(ProgramRunner runner, MyRunProfile profile, Executor executor) { + private static void performAction(@NotNull ExecutionEnvironmentBuilder builder) { + ExecutionEnvironment environment = builder.build(); try { - new ExecutionEnvironmentBuilder(myEnvironment) - .runner(runner) - .executor(executor) - .runProfile(profile) - .buildAndExecute(); + environment.getRunner().execute(environment); } - catch (ExecutionException e1) { - LOG.error(e1); + catch (ExecutionException e) { + LOG.error(e); } finally { - profile.clear(); + ((MyRunProfile)environment.getRunProfile()).clear(); } } - @Nullable + @Deprecated public MyRunProfile getRunProfile() { return null; } + @Nullable + protected MyRunProfile getRunProfile(@NotNull ExecutionEnvironment environment) { + //noinspection deprecation + return getRunProfile(); + } + @Nullable public TestFrameworkRunningModel getModel() { if (myModel != null) { @@ -298,7 +258,6 @@ public class AbstractRerunFailedTestsAction extends AnAction implements AnAction public void clear() { } - @Override public void checkConfiguration() throws RuntimeConfigurationException { } diff --git a/platform/testRunner/src/com/intellij/execution/testframework/actions/RerunFailedTestsAction.java b/platform/testRunner/src/com/intellij/execution/testframework/actions/RerunFailedTestsAction.java new file mode 100644 index 000000000000..af15e3c14ce1 --- /dev/null +++ b/platform/testRunner/src/com/intellij/execution/testframework/actions/RerunFailedTestsAction.java @@ -0,0 +1,12 @@ +package com.intellij.execution.testframework.actions; + +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.NotNull; + +class RerunFailedTestsAction extends AnAction { + @Override + public void actionPerformed(@NotNull AnActionEvent e) { + throw new IllegalStateException("Action only as template"); + } +} diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java index ddc28745934a..6b114f655d17 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java @@ -73,6 +73,7 @@ import gnu.trove.THashMap; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.TestOnly; import javax.swing.*; import javax.swing.event.HyperlinkEvent; @@ -217,6 +218,11 @@ public class XDebugSessionImpl implements XDebugSession { return myEnvironment != null ? myEnvironment.getRunProfile() : null; } + @TestOnly + public ExecutionEnvironment getEnvironment() { + return myEnvironment; + } + public boolean isPauseActionSupported() { return myPauseActionSupported; } 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 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 getConfigurationEditor() { SettingsEditorGroup group = new SettingsEditorGroup(); @@ -93,22 +97,25 @@ public class JUnitConfiguration extends ModuleBasedConfiguration 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 envs) { myData.setEnvs(envs); } + @Override @NotNull public Map 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 myPackage = new RefactoringListeners.Accessor() { + @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 myClass = new RefactoringListeners.Accessor() { + @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 myFailedTests; - public TestMethods(final Project project, - final JUnitConfiguration configuration, - ExecutionEnvironment environment, - Collection failedTests) { - super(project, configuration, environment); + public TestMethods(@NotNull JUnitConfiguration configuration, + @NotNull ExecutionEnvironment environment, + @NotNull Collection failedTests) { + super(configuration, environment); + myFailedTests = failedTests; } diff --git a/plugins/junit/src/com/intellij/execution/junit/TestObject.java b/plugins/junit/src/com/intellij/execution/junit/TestObject.java index cc7c0ee66b74..114bd0122b73 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,7 +205,7 @@ 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()); @@ -368,8 +361,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() { @Override public TestFrameworkRunningModel get() { @@ -384,22 +376,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() { @Override public TestFrameworkRunningModel get() { @@ -421,12 +406,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() { @@ -449,7 +434,7 @@ public abstract class TestObject implements JavaCommandLine { if (getRunnerSettings() != null) { final String actionName = executor.getActionName(); - throw new CantRunException(actionName + " is disabled in fork mode.
Please change fork mode to <none> to " + actionName.toLowerCase() + "."); + throw new CantRunException(actionName + " is disabled in fork mode.
Please change fork mode to <none> to " + actionName.toLowerCase(Locale.ENGLISH) + "."); } final JavaParameters javaParameters = getJavaParameters(); 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/ui/actions/RerunFailedTestsAction.java b/plugins/junit/src/com/intellij/execution/junit2/ui/actions/RerunFailedTestsAction.java index 3fbc127a48ee..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 @@ -13,7 +13,6 @@ * 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.Executor; @@ -22,22 +21,21 @@ 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 diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java index 0c73ae5f5761..6579990d4184 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java @@ -14,12 +14,6 @@ * limitations under the License. */ -/* - * Created by IntelliJ IDEA. - * User: amrk - * Date: Jul 2, 2005 - * Time: 12:22:07 AM - */ package com.theoryinpractice.testng.configuration; import com.intellij.ExtensionPoints; @@ -40,7 +34,7 @@ import com.intellij.execution.ui.ConsoleViewContentType; import com.intellij.execution.util.JavaParametersUtil; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; -import com.intellij.openapi.module.LanguageLevelUtil; +import com.intellij.openapi.module.EffectiveLanguageLevelUtil; import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.impl.BackgroundableProcessIndicator; @@ -77,7 +71,6 @@ import org.testng.remote.RemoteArgs; import org.testng.remote.RemoteTestNG; import org.testng.remote.strprotocol.SerializedMessageSender; -import javax.swing.*; import java.io.File; import java.io.IOException; import java.net.InetAddress; @@ -98,7 +91,7 @@ public class TestNGRunnableState extends JavaCommandLineState { public TestNGRunnableState(ExecutionEnvironment environment, TestNGConfiguration config) { super(environment); - this.runnerSettings = environment.getRunnerSettings(); + runnerSettings = environment.getRunnerSettings(); this.config = config; //TODO need to narrow this down a bit //setModulesToCompile(ModuleManager.getInstance(config.getProject()).getModules()); @@ -120,6 +113,7 @@ public class TestNGRunnableState extends JavaCommandLineState { } } + @NotNull @Override public ExecutionResult execute(@NotNull final Executor executor, @NotNull final ProgramRunner runner) throws ExecutionException { final boolean smRunner = Registry.is("testng_sm_runner"); @@ -173,6 +167,7 @@ public class TestNGRunnableState extends JavaCommandLineState { final String text = event.getText(); final ConsoleViewContentType consoleViewType = ConsoleViewContentType.getConsoleViewType(outputType); final Printable printable = new Printable() { + @Override public void printOn(final Printer printer) { printer.print(text, consoleViewType); } @@ -188,9 +183,9 @@ public class TestNGRunnableState extends JavaCommandLineState { }); console.attachToProcess(processHandler); - RerunFailedTestsAction rerunFailedTestsAction = new RerunFailedTestsAction(console); - rerunFailedTestsAction.init(console.getProperties(), getEnvironment()); + RerunFailedTestsAction rerunFailedTestsAction = new RerunFailedTestsAction(console, console.getProperties()); rerunFailedTestsAction.setModelProvider(new Getter() { + @Override public TestFrameworkRunningModel get() { return console.getResultsView(); } @@ -218,8 +213,7 @@ public class TestNGRunnableState extends JavaCommandLineState { Disposer.register(getEnvironment().getProject(), smtConsoleView); smtConsoleView.attachToProcess(handler); - final RerunFailedTestsAction rerunFailedTestsAction = new RerunFailedTestsAction(smtConsoleView); - rerunFailedTestsAction.init(testConsoleProperties, getEnvironment()); + final RerunFailedTestsAction rerunFailedTestsAction = new RerunFailedTestsAction(smtConsoleView, testConsoleProperties); rerunFailedTestsAction.setModelProvider(new Getter() { @Override public TestFrameworkRunningModel get() { @@ -264,7 +258,7 @@ public class TestNGRunnableState extends JavaCommandLineState { Module module = config.getConfigurationModule().getModule(); LanguageLevel effectiveLanguageLevel = module == null ? LanguageLevelProjectExtension.getInstance(project).getLanguageLevel() - : LanguageLevelUtil.getEffectiveLanguageLevel(module); + : EffectiveLanguageLevelUtil.getEffectiveLanguageLevel(module); final boolean is15 = effectiveLanguageLevel != LanguageLevel.JDK_1_4 && effectiveLanguageLevel != LanguageLevel.JDK_1_3; LOG.info("Language level is " + effectiveLanguageLevel.toString()); @@ -311,7 +305,7 @@ public class TestNGRunnableState extends JavaCommandLineState { javaParameters.getProgramParametersList().add(supportSerializationProtocol(config) ? RemoteArgs.PORT : CommandLineArgs.PORT, String.valueOf(port)); - if (data.getOutputDirectory() != null && !"".equals(data.getOutputDirectory())) { + if (data.getOutputDirectory() != null && !data.getOutputDirectory().isEmpty()) { javaParameters.getProgramParametersList().add(CommandLineArgs.OUTPUT_DIRECTORY, data.getOutputDirectory()); } @@ -379,7 +373,7 @@ public class TestNGRunnableState extends JavaCommandLineState { try { hostname = InetAddress.getLocalHost().getHostName(); } - catch (UnknownHostException e) { + catch (UnknownHostException ignored) { } params.add("-Xdebug"); params.add("-Xrunjdwp:transport=dt_socket,address=" + hostname + ':' + debugPort + ",suspend=y,server=n"); diff --git a/plugins/testng/src/com/theoryinpractice/testng/ui/actions/RerunFailedTestsAction.java b/plugins/testng/src/com/theoryinpractice/testng/ui/actions/RerunFailedTestsAction.java index 597bb5983876..200983a2f1c6 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/ui/actions/RerunFailedTestsAction.java +++ b/plugins/testng/src/com/theoryinpractice/testng/ui/actions/RerunFailedTestsAction.java @@ -1,13 +1,13 @@ package com.theoryinpractice.testng.ui.actions; import com.intellij.execution.CantRunException; -import com.intellij.execution.ExecutionException; import com.intellij.execution.Executor; import com.intellij.execution.Location; import com.intellij.execution.actions.JavaRerunFailedTestsAction; import com.intellij.execution.configurations.RunProfileState; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.testframework.AbstractTestProxy; +import com.intellij.execution.testframework.TestConsoleProperties; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; @@ -30,23 +30,23 @@ import java.net.ServerSocket; import java.util.*; 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) { final TestNGConfiguration configuration = (TestNGConfiguration)getModel().getProperties().getConfiguration(); final List failedTests = getFailedTests(configuration.getProject()); return new MyRunProfile(configuration) { + @Override @NotNull public Module[] getModules() { return Module.EMPTY_ARRAY; } - public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) throws ExecutionException { - + @Override + public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) { return new TestNGRunnableState(env, configuration) { @Override protected SearchingForTestsTask createSearchingForTestsTask(ServerSocket serverSocket, @@ -99,5 +99,4 @@ public class RerunFailedTestsAction extends JavaRerunFailedTestsAction { } }; } - } diff --git a/python/src/META-INF/pycharm-core.xml b/python/src/META-INF/pycharm-core.xml index a9f7824b5340..cd2022b4036b 100644 --- a/python/src/META-INF/pycharm-core.xml +++ b/python/src/META-INF/pycharm-core.xml @@ -104,7 +104,7 @@ - diff --git a/python/src/com/jetbrains/python/testing/PyRerunFailedTestsAction.java b/python/src/com/jetbrains/python/testing/PyRerunFailedTestsAction.java index 0b922514e52e..53cffdf0ee41 100644 --- a/python/src/com/jetbrains/python/testing/PyRerunFailedTestsAction.java +++ b/python/src/com/jetbrains/python/testing/PyRerunFailedTestsAction.java @@ -36,25 +36,21 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -/* - * User: ktisha - */ public class PyRerunFailedTestsAction extends AbstractRerunFailedTestsAction { - protected PyRerunFailedTestsAction(@NotNull ComponentContainer componentContainer) { super(componentContainer); } @Override @Nullable - public MyRunProfile getRunProfile() { + protected MyRunProfile getRunProfile(@NotNull ExecutionEnvironment environment) { final TestFrameworkRunningModel model = getModel(); - if (model == null) return null; - final AbstractPythonRunConfiguration configuration = (AbstractPythonRunConfiguration)model.getProperties().getConfiguration(); - return new MyTestRunProfile(configuration); + if (model == null) { + return null; + } + return new MyTestRunProfile((AbstractPythonRunConfiguration)model.getProperties().getConfiguration()); } - private class MyTestRunProfile extends MyRunProfile { public MyTestRunProfile(RunConfigurationBase configuration) { diff --git a/python/src/com/jetbrains/python/testing/PythonTestCommandLineStateBase.java b/python/src/com/jetbrains/python/testing/PythonTestCommandLineStateBase.java index 1a5aafe59051..c73a488dc7f5 100644 --- a/python/src/com/jetbrains/python/testing/PythonTestCommandLineStateBase.java +++ b/python/src/com/jetbrains/python/testing/PythonTestCommandLineStateBase.java @@ -63,6 +63,7 @@ public abstract class PythonTestCommandLineStateBase extends PythonCommandLineSt myConfiguration = configuration; } + @Override @NotNull protected ConsoleView createAndAttachConsole(Project project, ProcessHandler processHandler, Executor executor) throws ExecutionException { @@ -89,6 +90,7 @@ public abstract class PythonTestCommandLineStateBase extends PythonCommandLineSt return new PythonTRunnerConsoleProperties(myConfiguration, executor, false); } + @Override public GeneralCommandLine generateCommandLine() throws ExecutionException { GeneralCommandLine cmd = super.generateCommandLine(); @@ -135,7 +137,7 @@ public abstract class PythonTestCommandLineStateBase extends PythonCommandLineSt PyRerunFailedTestsAction rerunFailedTestsAction = new PyRerunFailedTestsAction(console); if (console instanceof SMTRunnerConsoleView) { - rerunFailedTestsAction.init(((BaseTestsOutputConsoleView)console).getProperties(), getEnvironment()); + rerunFailedTestsAction.init(((BaseTestsOutputConsoleView)console).getProperties()); rerunFailedTestsAction.setModelProvider(new Getter() { @Override public TestFrameworkRunningModel get() { diff --git a/resources/src/idea/RichPlatformActions.xml b/resources/src/idea/RichPlatformActions.xml index 324f2fe29c6e..9ca96101df82 100644 --- a/resources/src/idea/RichPlatformActions.xml +++ b/resources/src/idea/RichPlatformActions.xml @@ -28,7 +28,7 @@ -