*/
package com.intellij.execution.impl;
+import com.intellij.execution.ExecutionManager;
import com.intellij.execution.RunManagerConfig;
import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.executors.DefaultRunExecutor;
import com.intellij.execution.runners.ExecutionEnvironmentBuilder;
import com.intellij.execution.ui.RunContentDescriptor;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Conditions;
-import com.intellij.openapi.util.text.StringUtil;
import com.intellij.testFramework.LightPlatformTestCase;
-import com.intellij.util.Function;
-import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
-import java.util.List;
-
public class ExecutionManagerTest extends LightPlatformTestCase {
private boolean myRestartRequiresConfirmation;
@Override
public void tearDown() throws Exception {
try {
+ ExecutionTestUtil.terminateAllRunningDescriptors(ExecutionManager.getInstance(getProject()));
RunManagerConfig config = RunManagerImpl.getInstanceImpl(getProject()).getConfig();
config.setRestartRequiresConfirmation(myRestartRequiresConfirmation);
}
@NotNull
private static FakeProcessHandler getProcessHandler(@NotNull ExecutionManagerImpl executionManager) {
- List<RunContentDescriptor> descriptors = executionManager.getRunningDescriptors(Conditions.alwaysTrue());
- String actualDescriptorsMsg = stringifyDescriptors(descriptors);
- assertEquals(actualDescriptorsMsg, 1, descriptors.size());
- RunContentDescriptor descriptor = ContainerUtil.getFirstItem(descriptors);
- assertNotNull(actualDescriptorsMsg, descriptor);
+ RunContentDescriptor descriptor = ExecutionTestUtil.getSingleRunContentDescriptor(executionManager);
ProcessHandler processHandler = descriptor.getProcessHandler();
- assertNotNull(actualDescriptorsMsg, processHandler);
+ assertNotNull(processHandler);
return (FakeProcessHandler)processHandler;
}
- @NotNull
- private static String stringifyDescriptors(@NotNull List<RunContentDescriptor> descriptors) {
- return "Actual descriptors: " + StringUtil.join(descriptors, new Function<RunContentDescriptor, String>() {
- @Override
- public String fun(RunContentDescriptor descriptor) {
- if (descriptor == null) {
- return "null";
- }
- ProcessHandler processHandler = descriptor.getProcessHandler();
- return String.format("[%s, %s]",
- descriptor.getDisplayName(),
- processHandler != null ? processHandler.getClass().getName() : null);
- }
- }, ", ");
- }
-
@NotNull
private static ExecutionEnvironment createEnv(@NotNull Project project, @NotNull RunnerAndConfigurationSettings settings) {
return new ExecutionEnvironmentBuilder(project, DefaultRunExecutor.getRunExecutorInstance())
--- /dev/null
+/*
+ * Copyright 2000-2016 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.intellij.execution.impl;
+
+import com.intellij.execution.ExecutionManager;
+import com.intellij.execution.process.ProcessHandler;
+import com.intellij.execution.process.ScriptRunnerUtil;
+import com.intellij.execution.ui.RunContentDescriptor;
+import com.intellij.openapi.util.Conditions;
+import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.util.Function;
+import com.intellij.util.ObjectUtils;
+import com.intellij.util.containers.ContainerUtil;
+import org.jetbrains.annotations.NotNull;
+import org.junit.Assert;
+
+import java.util.List;
+
+public class ExecutionTestUtil {
+ private ExecutionTestUtil() {
+ }
+
+ @NotNull
+ public static RunContentDescriptor getSingleRunContentDescriptor(@NotNull ExecutionManager executionManager) {
+ List<RunContentDescriptor> descriptors = ((ExecutionManagerImpl)executionManager).getRunningDescriptors(Conditions.alwaysTrue());
+ String actualDescriptorsMsg = stringifyDescriptors(descriptors);
+ Assert.assertEquals(actualDescriptorsMsg, 1, descriptors.size());
+ RunContentDescriptor descriptor = ContainerUtil.getFirstItem(descriptors);
+ return ObjectUtils.notNull(descriptor);
+ }
+
+ public static void terminateAllRunningDescriptors(@NotNull ExecutionManager executionManager) {
+ List<RunContentDescriptor> descriptors = ((ExecutionManagerImpl)executionManager).getRunningDescriptors(Conditions.alwaysTrue());
+ for (RunContentDescriptor descriptor : descriptors) {
+ ProcessHandler processHandler = descriptor.getProcessHandler();
+ if (processHandler != null) {
+ ScriptRunnerUtil.terminateProcessHandler(processHandler, 0, null);
+ }
+ }
+ }
+
+ @NotNull
+ private static String stringifyDescriptors(@NotNull List<RunContentDescriptor> descriptors) {
+ return "Actual descriptors: " + StringUtil.join(descriptors, new Function<RunContentDescriptor, String>() {
+ @Override
+ public String fun(RunContentDescriptor descriptor) {
+ if (descriptor == null) {
+ return "null";
+ }
+ ProcessHandler processHandler = descriptor.getProcessHandler();
+ return String.format("[%s, %s]",
+ descriptor.getDisplayName(),
+ processHandler != null ? processHandler.getClass().getName() : null);
+ }
+ }, ", ");
+ }
+}
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.messages.MessageBus;
import com.intellij.util.messages.MessageBusConnection;
+import com.intellij.util.ui.UIUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@Override
public void tearDown() throws Exception {
- myManager = null;
- super.tearDown();
+ try {
+ ExecutionTestUtil.terminateAllRunningDescriptors(ExecutionManager.getInstance(getProject()));
+ myManager = null;
+ }
+ finally {
+ super.tearDown();
+ }
}
public void testInitComponentSubscribesForModulesTopic() throws Exception {
descriptorToReuse.setActivateToolWindowWhenAdded(false);
descriptorToReuse.setReuseToolWindowActivation(true);
env.setContentToReuse(descriptorToReuse);
- env.getRunner().execute(env);
- RunContentDescriptor lastDescriptor = programRunner.getLastDescriptor();
- assertNotNull(lastDescriptor);
+ ExecutionManager executionManager = ExecutionManager.getInstance(getProject());
+ executionManager.restartRunProfile(env);
+ UIUtil.dispatchAllInvocationEvents();
+ RunContentDescriptor lastDescriptor = ExecutionTestUtil.getSingleRunContentDescriptor(executionManager);
assertFalse(lastDescriptor.isActivateToolWindowWhenAdded());
Disposer.dispose(descriptorToReuse);
}