diff --git a/java/execution/impl/src/com/intellij/execution/testframework/JavaAwareTestConsoleProperties.java b/java/execution/impl/src/com/intellij/execution/testframework/JavaAwareTestConsoleProperties.java index 1c98de5ba1fa..6ca16855c893 100644 --- a/java/execution/impl/src/com/intellij/execution/testframework/JavaAwareTestConsoleProperties.java +++ b/java/execution/impl/src/com/intellij/execution/testframework/JavaAwareTestConsoleProperties.java @@ -22,6 +22,7 @@ package com.intellij.execution.testframework; import com.intellij.debugger.DebuggerManagerEx; import com.intellij.debugger.impl.DebuggerSession; +import com.intellij.execution.Executor; import com.intellij.openapi.project.Project; import com.intellij.util.config.Storage; import org.jetbrains.annotations.Nullable; @@ -29,13 +30,8 @@ import org.jetbrains.annotations.Nullable; import java.util.Collection; public abstract class JavaAwareTestConsoleProperties extends TestConsoleProperties { - public JavaAwareTestConsoleProperties(final Storage storage, Project project) { - super(storage, project); - } - - @Override - public boolean isDebug() { - return getDebugSession() != null; + public JavaAwareTestConsoleProperties(final Storage storage, Project project, Executor executor) { + super(storage, project, executor); } @Override diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/SMTestRunnerConnectionUtil.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/SMTestRunnerConnectionUtil.java index 6a7f3ee1e1e2..77727073a0b2 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/SMTestRunnerConnectionUtil.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/SMTestRunnerConnectionUtil.java @@ -16,6 +16,7 @@ package com.intellij.execution.testframework.sm; import com.intellij.execution.ExecutionException; +import com.intellij.execution.Executor; import com.intellij.execution.configurations.CommandLineState; import com.intellij.execution.configurations.ConfigurationPerRunnerSettings; import com.intellij.execution.configurations.RunnerSettings; @@ -131,16 +132,18 @@ public class SMTestRunnerConnectionUtil { * @param processHandler Process handler * @param commandLineState Command line state * @param config User run configuration settings + * @param executor Executor * @return Console view * @throws ExecutionException If IDEA cannot execute process this Exception will * be caught and shown in error message box */ public static ConsoleView attachRunner(@NotNull final String testFrameworkName, @NotNull final ProcessHandler processHandler, @NotNull final CommandLineState commandLineState, - @NotNull final RuntimeConfiguration config + @NotNull final RuntimeConfiguration config, + @NotNull final Executor executor ) throws ExecutionException { // final String testFrameworkName - final TestConsoleProperties consoleProperties = new SMTRunnerConsoleProperties(config, testFrameworkName); + final TestConsoleProperties consoleProperties = new SMTRunnerConsoleProperties(config, testFrameworkName, executor); return attachRunner(testFrameworkName, processHandler, consoleProperties, commandLineState.getRunnerSettings(), diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTRunnerConsoleProperties.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTRunnerConsoleProperties.java index 34f39808194b..cab20db48634 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTRunnerConsoleProperties.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTRunnerConsoleProperties.java @@ -15,13 +15,11 @@ */ package com.intellij.execution.testframework.sm.runner; +import com.intellij.execution.Executor; import com.intellij.execution.configurations.RuntimeConfiguration; import com.intellij.execution.testframework.TestConsoleProperties; import com.intellij.ide.util.PropertiesComponent; import com.intellij.util.config.Storage; -import com.intellij.xdebugger.XDebugSession; -import com.intellij.xdebugger.XDebuggerManager; -import org.jetbrains.annotations.Nullable; /** * @author: Roman Chernyatchik @@ -32,40 +30,17 @@ public class SMTRunnerConsoleProperties extends TestConsoleProperties { /** * @param config * @param testFrameworkName Prefix for storage which keeps runner settings. E.g. "RubyTestUnit" + * @param executor */ public SMTRunnerConsoleProperties(final RuntimeConfiguration config, - final String testFrameworkName) + final String testFrameworkName, + Executor executor) { - super(new Storage.PropertiesComponentStorage(testFrameworkName + "Support.", PropertiesComponent.getInstance()), config.getProject()); + super(new Storage.PropertiesComponentStorage(testFrameworkName + "Support.", PropertiesComponent.getInstance()), config.getProject(), + executor); myConfiguration = config; } - @Override - public boolean isDebug() { - return getDebugSession() != null; - } - - @Override - public boolean isPaused() { - final XDebugSession debuggerSession = getDebugSession(); - return debuggerSession != null && debuggerSession.isPaused(); - } - - @Nullable - public XDebugSession getDebugSession() { - final XDebuggerManager debuggerManager = XDebuggerManager.getInstance(getProject()); - if (debuggerManager == null) { - return null; - } - final XDebugSession[] sessions = debuggerManager.getDebugSessions(); - for (final XDebugSession debuggerSession : sessions) { - if (getConsole() == debuggerSession.getRunContentDescriptor().getExecutionConsole()) { - return debuggerSession; - } - } - return null; - } - public RuntimeConfiguration getConfiguration() { return myConfiguration; } diff --git a/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/BaseSMTRunnerTestCase.java b/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/BaseSMTRunnerTestCase.java index 607e32a8a2de..301986c39041 100644 --- a/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/BaseSMTRunnerTestCase.java +++ b/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/BaseSMTRunnerTestCase.java @@ -16,6 +16,7 @@ package com.intellij.execution.testframework.sm.runner; import com.intellij.execution.configurations.RuntimeConfiguration; +import com.intellij.execution.executors.DefaultDebugExecutor; import com.intellij.execution.testframework.TestConsoleProperties; import com.intellij.testFramework.LightPlatformTestCase; import com.intellij.testFramework.PlatformTestCase; @@ -86,7 +87,7 @@ public abstract class BaseSMTRunnerTestCase extends LightPlatformTestCase { protected TestConsoleProperties createConsoleProperties() { final RuntimeConfiguration runConfiguration = createRunConfiguration(); - final TestConsoleProperties consoleProperties = new SMTRunnerConsoleProperties(runConfiguration, "SMRunnerTests"); + final TestConsoleProperties consoleProperties = new SMTRunnerConsoleProperties(runConfiguration, "SMRunnerTests", DefaultDebugExecutor.getDebugExecutorInstance()); TestConsoleProperties.HIDE_PASSED_TESTS.set(consoleProperties, false); return consoleProperties; diff --git a/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/ui/TestsPresentationUtilTest.java b/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/ui/TestsPresentationUtilTest.java index efb7f16e7b76..df999debac32 100644 --- a/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/ui/TestsPresentationUtilTest.java +++ b/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/ui/TestsPresentationUtilTest.java @@ -15,6 +15,7 @@ */ package com.intellij.execution.testframework.sm.runner.ui; +import com.intellij.execution.executors.DefaultDebugExecutor; import com.intellij.execution.testframework.PoolOfTestIcons; import com.intellij.execution.testframework.sm.UITestUtil; import com.intellij.execution.testframework.sm.runner.BaseSMTRunnerTestCase; @@ -638,7 +639,7 @@ public class TestsPresentationUtilTest extends BaseSMTRunnerTestCase { public MyRenderer(final boolean isPaused, final UITestUtil.FragmentsContainer fragmentsContainer) { - super(new SMTRunnerConsoleProperties(createRunConfiguration(), "SMRunnerTests") { + super(new SMTRunnerConsoleProperties(createRunConfiguration(), "SMRunnerTests", DefaultDebugExecutor.getDebugExecutorInstance()) { @Override public boolean isPaused() { return isPaused; diff --git a/platform/testRunner/src/com/intellij/execution/testframework/TestConsoleProperties.java b/platform/testRunner/src/com/intellij/execution/testframework/TestConsoleProperties.java index 74d432d106a7..81420f866b65 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/TestConsoleProperties.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/TestConsoleProperties.java @@ -20,7 +20,9 @@ */ package com.intellij.execution.testframework; +import com.intellij.execution.Executor; import com.intellij.execution.configurations.RuntimeConfiguration; +import com.intellij.execution.executors.DefaultDebugExecutor; import com.intellij.execution.ui.ConsoleView; import com.intellij.execution.ui.ExecutionConsole; import com.intellij.execution.util.StoringPropertyContainer; @@ -31,6 +33,8 @@ import com.intellij.psi.search.GlobalSearchScope; import com.intellij.util.config.AbstractProperty; import com.intellij.util.config.BooleanProperty; import com.intellij.util.config.Storage; +import com.intellij.xdebugger.XDebugSession; +import com.intellij.xdebugger.XDebuggerManager; import java.util.ArrayList; import java.util.HashMap; @@ -46,14 +50,16 @@ public abstract class TestConsoleProperties extends StoringPropertyContainer imp public static final BooleanProperty SHOW_STATISTICS = new BooleanProperty("showStatistics", false); private final Project myProject; + private final Executor myExecutor; private ConsoleView myConsole; protected final HashMap> myListeners = new HashMap>(); - public TestConsoleProperties(final Storage storage, Project project) { + public TestConsoleProperties(final Storage storage, Project project, Executor executor) { super(storage); myProject = project; + myExecutor = executor; } public Project getProject() { @@ -92,9 +98,14 @@ public abstract class TestConsoleProperties extends StoringPropertyContainer imp } } - public abstract boolean isDebug(); + public boolean isDebug() { + return myExecutor.getId() == DefaultDebugExecutor.EXECUTOR_ID; + } - public abstract boolean isPaused(); + public boolean isPaused() { + final XDebugSession debuggerSession = XDebuggerManager.getInstance(myProject).getDebugSession(getConsole()); + return debuggerSession != null && debuggerSession.isPaused(); + } protected void onPropertyChanged(final AbstractProperty property, final T value) { final ArrayList listeners = myListeners.get(property); diff --git a/platform/testRunner/testRunner.iml b/platform/testRunner/testRunner.iml index 21d34cc6920b..5c2b923541d0 100644 --- a/platform/testRunner/testRunner.iml +++ b/platform/testRunner/testRunner.iml @@ -10,6 +10,7 @@ + diff --git a/platform/xdebugger-api/src/com/intellij/xdebugger/XDebuggerManager.java b/platform/xdebugger-api/src/com/intellij/xdebugger/XDebuggerManager.java index 0b26b83bdf76..53065283146b 100644 --- a/platform/xdebugger-api/src/com/intellij/xdebugger/XDebuggerManager.java +++ b/platform/xdebugger-api/src/com/intellij/xdebugger/XDebuggerManager.java @@ -19,6 +19,7 @@ package com.intellij.xdebugger; import com.intellij.execution.ExecutionException; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.runners.ProgramRunner; +import com.intellij.execution.ui.ExecutionConsole; import com.intellij.execution.ui.RunContentDescriptor; import com.intellij.openapi.project.Project; import com.intellij.xdebugger.breakpoints.XBreakpointManager; @@ -43,6 +44,9 @@ public abstract class XDebuggerManager { @NotNull public abstract XDebugSession[] getDebugSessions(); + @Nullable + public abstract XDebugSession getDebugSession(@NotNull ExecutionConsole executionConsole); + @NotNull public abstract Collection getDebugProcesses(Class processClass); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java index f6f498be98c9..28d5c23a7326 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java @@ -21,26 +21,27 @@ import com.intellij.execution.executors.DefaultDebugExecutor; import com.intellij.execution.process.ProcessHandler; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.runners.ProgramRunner; +import com.intellij.execution.ui.ExecutionConsole; import com.intellij.execution.ui.RunContentDescriptor; import com.intellij.execution.ui.RunContentListener; import com.intellij.execution.ui.RunContentManager; +import com.intellij.openapi.Disposable; import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.components.ProjectComponent; import com.intellij.openapi.components.State; import com.intellij.openapi.components.Storage; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.fileEditor.FileEditorManager; +import com.intellij.openapi.fileEditor.FileEditorManagerAdapter; +import com.intellij.openapi.fileEditor.FileEditorManagerListener; import com.intellij.openapi.project.Project; import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.fileEditor.FileEditorManagerListener; -import com.intellij.openapi.fileEditor.FileEditorManagerAdapter; -import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.impl.http.HttpVirtualFile; -import com.intellij.openapi.Disposable; import com.intellij.util.containers.HashMap; -import com.intellij.util.xmlb.annotations.Property; import com.intellij.util.messages.MessageBus; +import com.intellij.util.xmlb.annotations.Property; import com.intellij.xdebugger.*; import com.intellij.xdebugger.impl.breakpoints.XBreakpointManagerImpl; import com.intellij.xdebugger.impl.ui.ExecutionPointHighlighter; @@ -208,6 +209,17 @@ public class XDebuggerManagerImpl extends XDebuggerManager return mySessions.toArray(new XDebugSession[mySessions.size()]); } + @Override + @Nullable + public XDebugSession getDebugSession(@NotNull ExecutionConsole executionConsole) { + for (final XDebugSession debuggerSession : getDebugSessions()) { + if (executionConsole == debuggerSession.getRunContentDescriptor().getExecutionConsole()) { + return debuggerSession; + } + } + return null; + } + @NotNull @Override public Collection getDebugProcesses(Class processClass) { diff --git a/plugins/junit/src/com/intellij/execution/junit/TestObject.java b/plugins/junit/src/com/intellij/execution/junit/TestObject.java index dceaf3e1518d..a9232d65affa 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestObject.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestObject.java @@ -260,7 +260,7 @@ public abstract class TestObject implements JavaCommandLine { ext.handleStartProcess(myConfiguration, handler); } final TestProxy unboundOutputRoot = new TestProxy(new RootTestInfo()); - final JUnitConsoleProperties consoleProperties = new JUnitConsoleProperties(myConfiguration); + final JUnitConsoleProperties consoleProperties = new JUnitConsoleProperties(myConfiguration, executor); final JUnitTreeConsoleView consoleView = new JUnitTreeConsoleView(consoleProperties, getRunnerSettings(), getConfigurationSettings(), unboundOutputRoot); consoleView.initUI(); consoleView.attachToProcess(handler); diff --git a/plugins/junit/src/com/intellij/execution/junit2/ui/properties/JUnitConsoleProperties.java b/plugins/junit/src/com/intellij/execution/junit2/ui/properties/JUnitConsoleProperties.java index c5793c32088d..5698ddcf7aea 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/ui/properties/JUnitConsoleProperties.java +++ b/plugins/junit/src/com/intellij/execution/junit2/ui/properties/JUnitConsoleProperties.java @@ -16,6 +16,7 @@ package com.intellij.execution.junit2.ui.properties; +import com.intellij.execution.Executor; import com.intellij.execution.junit.JUnitConfiguration; import com.intellij.execution.testframework.JavaAwareTestConsoleProperties; import com.intellij.ide.util.PropertiesComponent; @@ -29,12 +30,12 @@ public class JUnitConsoleProperties extends JavaAwareTestConsoleProperties { private final JUnitConfiguration myConfiguration; - public JUnitConsoleProperties(@NotNull JUnitConfiguration configuration) { - this(configuration, new Storage.PropertiesComponentStorage(GROUP_NAME, PropertiesComponent.getInstance())); + public JUnitConsoleProperties(@NotNull JUnitConfiguration configuration, Executor executor) { + this(configuration, new Storage.PropertiesComponentStorage(GROUP_NAME, PropertiesComponent.getInstance()), executor); } - public JUnitConsoleProperties(@NotNull JUnitConfiguration configuration, final Storage storage) { - super(storage, configuration.getProject()); + public JUnitConsoleProperties(@NotNull JUnitConfiguration configuration, final Storage storage, Executor executor) { + super(storage, configuration.getProject(), executor); myConfiguration = configuration; } diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java index d9669df9ee23..7424fa25ae72 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java @@ -127,7 +127,8 @@ public class TestNGRunnableState extends JavaCommandLineState { throw e; } final TreeRootNode unboundOutputRoot = new TreeRootNode(); - final TestNGConsoleView console = new TestNGConsoleView(config, runnerSettings, myConfigurationPerRunnerSettings, unboundOutputRoot); + final TestNGConsoleView console = new TestNGConsoleView(config, runnerSettings, myConfigurationPerRunnerSettings, unboundOutputRoot, + executor); console.initUI(); unboundOutputRoot.setPrinter(console.getPrinter()); for (RunConfigurationExtension ext : Extensions.getExtensions(RunConfigurationExtension.EP_NAME)) { diff --git a/plugins/testng/src/com/theoryinpractice/testng/model/TestNGConsoleProperties.java b/plugins/testng/src/com/theoryinpractice/testng/model/TestNGConsoleProperties.java index ed87ce72230c..5ecc3b1e477f 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/model/TestNGConsoleProperties.java +++ b/plugins/testng/src/com/theoryinpractice/testng/model/TestNGConsoleProperties.java @@ -15,6 +15,7 @@ */ package com.theoryinpractice.testng.model; +import com.intellij.execution.Executor; import com.intellij.execution.testframework.JavaAwareTestConsoleProperties; import com.intellij.ide.util.PropertiesComponent; import com.intellij.psi.search.GlobalSearchScope; @@ -26,9 +27,9 @@ public class TestNGConsoleProperties extends JavaAwareTestConsoleProperties { @NonNls private static final String PREFIX = "TestNGSupport."; private final TestNGConfiguration myConfiguration; - public TestNGConsoleProperties(TestNGConfiguration config) + public TestNGConsoleProperties(TestNGConfiguration config, Executor executor) { - super(new Storage.PropertiesComponentStorage(PREFIX, PropertiesComponent.getInstance()), config.getProject()); + super(new Storage.PropertiesComponentStorage(PREFIX, PropertiesComponent.getInstance()), config.getProject(), executor); myConfiguration = config; } diff --git a/plugins/testng/src/com/theoryinpractice/testng/ui/TestNGConsoleView.java b/plugins/testng/src/com/theoryinpractice/testng/ui/TestNGConsoleView.java index 4d67bccc0add..2e628aca3bdd 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/ui/TestNGConsoleView.java +++ b/plugins/testng/src/com/theoryinpractice/testng/ui/TestNGConsoleView.java @@ -22,9 +22,9 @@ */ package com.theoryinpractice.testng.ui; +import com.intellij.execution.Executor; import com.intellij.execution.configurations.ConfigurationPerRunnerSettings; import com.intellij.execution.configurations.RunnerSettings; -import com.intellij.execution.filters.HyperlinkInfo; import com.intellij.execution.process.ProcessHandler; import com.intellij.execution.testframework.Printable; import com.intellij.execution.testframework.Printer; @@ -32,9 +32,7 @@ import com.intellij.execution.testframework.TestTreeView; import com.intellij.execution.testframework.stacktrace.DiffHyperlink; import com.intellij.execution.testframework.ui.BaseTestsOutputConsoleView; import com.intellij.execution.testframework.ui.TestResultsPanel; -import com.intellij.execution.ui.ConsoleView; import com.intellij.execution.ui.ConsoleViewContentType; -import com.intellij.openapi.application.ApplicationManager; import com.theoryinpractice.testng.configuration.TestNGConfiguration; import com.theoryinpractice.testng.model.TestNGConsoleProperties; import com.theoryinpractice.testng.model.TestProxy; @@ -42,7 +40,6 @@ import com.theoryinpractice.testng.model.TreeRootNode; import org.jetbrains.annotations.NonNls; import org.testng.remote.strprotocol.TestResultMessage; -import javax.swing.*; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import java.util.ArrayList; @@ -68,8 +65,9 @@ public class TestNGConsoleView extends BaseTestsOutputConsoleView { public TestNGConsoleView(TestNGConfiguration config, final RunnerSettings runnerSettings, final ConfigurationPerRunnerSettings configurationPerRunnerSettings, - final TreeRootNode unboundOutputRoot) { - super(new TestNGConsoleProperties(config), unboundOutputRoot); + final TreeRootNode unboundOutputRoot, + Executor executor) { + super(new TestNGConsoleProperties(config, executor), unboundOutputRoot); myConfiguration = config; myRunnerSettings = runnerSettings; myConfigurationPerRunnerSettings = configurationPerRunnerSettings;