refactoring: TestConsoleProperties now holds a reference to Executor

This commit is contained in:
Kirill.Safonov
2010-07-30 13:43:29 +04:00
parent c4659507d8
commit eebb2c1480
14 changed files with 69 additions and 64 deletions
@@ -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
@@ -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(),
@@ -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;
}
@@ -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;
@@ -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;
@@ -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<AbstractProperty, ArrayList<TestFrameworkPropertyListener>> myListeners =
new HashMap<AbstractProperty, ArrayList<TestFrameworkPropertyListener>>();
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 <T> void onPropertyChanged(final AbstractProperty<T> property, final T value) {
final ArrayList<TestFrameworkPropertyListener> listeners = myListeners.get(property);
+1
View File
@@ -10,6 +10,7 @@
<orderEntry type="module" module-name="platform-api" />
<orderEntry type="module" module-name="lang-impl" />
<orderEntry type="module" module-name="platform-impl" />
<orderEntry type="module" module-name="xdebugger-api" />
</component>
</module>
@@ -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 <T extends XDebugProcess> Collection<? extends T> getDebugProcesses(Class<T> processClass);
@@ -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 <T extends XDebugProcess> Collection<? extends T> getDebugProcesses(Class<T> processClass) {
@@ -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);
@@ -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;
}
@@ -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)) {
@@ -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;
}
@@ -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;