mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
run manager: test for toolwindow activation suppression
This commit is contained in:
+79
-4
@@ -16,15 +16,21 @@
|
||||
package com.intellij.execution.impl;
|
||||
|
||||
import com.intellij.ProjectTopics;
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.Executor;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.*;
|
||||
import com.intellij.execution.configuration.EmptyRunProfileState;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.executors.DefaultRunExecutor;
|
||||
import com.intellij.execution.process.ProcessHandler;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.runners.ExecutionEnvironmentBuilder;
|
||||
import com.intellij.execution.runners.GenericProgramRunner;
|
||||
import com.intellij.execution.runners.RunContentBuilder;
|
||||
import com.intellij.execution.ui.RunContentDescriptor;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.options.SettingsEditor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.testFramework.LightPlatformTestCase;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.messages.MessageBus;
|
||||
@@ -36,6 +42,7 @@ import org.jmock.Expectations;
|
||||
import org.jmock.Mockery;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -114,6 +121,26 @@ public class ModuleRunConfigurationManagerTest extends LightPlatformTestCase {
|
||||
assertSameElements("one run config should be removed", myRemovedSettings, Collections.singleton(mySettings));
|
||||
}
|
||||
|
||||
public void testSuppressToolwindowActivation() throws Exception {
|
||||
RunnerAndConfigurationSettings settings = new RunnerAndConfigurationSettingsImpl(
|
||||
new MyRunManagerImpl(), new MyModuleBasedConfiguration("my-name", getProject(), getModule()), false
|
||||
);
|
||||
settings.setActivateToolWindowBeforeRun(true);
|
||||
MockProgramRunner programRunner = new MockProgramRunner();
|
||||
ExecutionEnvironment env = new ExecutionEnvironmentBuilder(getProject(), DefaultRunExecutor.getRunExecutorInstance())
|
||||
.runnerAndSettings(programRunner, settings)
|
||||
.build();
|
||||
RunContentDescriptor descriptorToReuse = new RunContentDescriptor(null, null, new JPanel(), "name");
|
||||
descriptorToReuse.setActivateToolWindowWhenAdded(false);
|
||||
descriptorToReuse.setReuseToolWindowActivation(true);
|
||||
env.setContentToReuse(descriptorToReuse);
|
||||
env.getRunner().execute(env);
|
||||
RunContentDescriptor lastDescriptor = programRunner.getLastDescriptor();
|
||||
assertNotNull(lastDescriptor);
|
||||
assertFalse(lastDescriptor.isActivateToolWindowWhenAdded());
|
||||
Disposer.dispose(descriptorToReuse);
|
||||
}
|
||||
|
||||
private static final class MyRunConfigurationModule extends RunConfigurationModule {
|
||||
private final Module myModule;
|
||||
public MyRunConfigurationModule(@NotNull final Project project, @NotNull final Module module) {
|
||||
@@ -170,7 +197,7 @@ public class ModuleRunConfigurationManagerTest extends LightPlatformTestCase {
|
||||
@Nullable
|
||||
@Override
|
||||
public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) throws ExecutionException {
|
||||
return null;
|
||||
return EmptyRunProfileState.INSTANCE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,4 +240,52 @@ public class ModuleRunConfigurationManagerTest extends LightPlatformTestCase {
|
||||
return new ConfigurationFactory[0];
|
||||
}
|
||||
}
|
||||
|
||||
private static class MockProgramRunner extends GenericProgramRunner {
|
||||
private RunContentDescriptor myLastDescriptor;
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getRunnerId() {
|
||||
return "MockProgramRunner";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RunContentDescriptor doExecute(@NotNull RunProfileState state, @NotNull ExecutionEnvironment env) throws ExecutionException {
|
||||
ExecutionResult executionResult = new DefaultExecutionResult(null, new NopProcessHandler());
|
||||
myLastDescriptor = new RunContentBuilder(executionResult, env).showRunContent(env.getContentToReuse());
|
||||
return myLastDescriptor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canRun(@NotNull String executorId, @NotNull RunProfile profile) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public RunContentDescriptor getLastDescriptor() {
|
||||
return myLastDescriptor;
|
||||
}
|
||||
}
|
||||
|
||||
public static class NopProcessHandler extends ProcessHandler {
|
||||
@Override
|
||||
protected void destroyProcessImpl() {
|
||||
notifyProcessTerminated(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void detachProcessImpl() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean detachIsDefault() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public OutputStream getProcessInput() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user