terminate all running descriptors
[idea/community.git] / platform / lang-impl / testSources / com / intellij / execution / impl / ExecutionTestUtil.java
1 /*
2  * Copyright 2000-2016 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.execution.impl;
17
18 import com.intellij.execution.ExecutionManager;
19 import com.intellij.execution.process.ProcessHandler;
20 import com.intellij.execution.process.ScriptRunnerUtil;
21 import com.intellij.execution.ui.RunContentDescriptor;
22 import com.intellij.openapi.util.Conditions;
23 import com.intellij.openapi.util.text.StringUtil;
24 import com.intellij.util.Function;
25 import com.intellij.util.ObjectUtils;
26 import com.intellij.util.containers.ContainerUtil;
27 import org.jetbrains.annotations.NotNull;
28 import org.junit.Assert;
29
30 import java.util.List;
31
32 public class ExecutionTestUtil {
33   private ExecutionTestUtil() {
34   }
35
36   @NotNull
37   public static RunContentDescriptor getSingleRunContentDescriptor(@NotNull ExecutionManager executionManager) {
38     List<RunContentDescriptor> descriptors = ((ExecutionManagerImpl)executionManager).getRunningDescriptors(Conditions.alwaysTrue());
39     String actualDescriptorsMsg = stringifyDescriptors(descriptors);
40     Assert.assertEquals(actualDescriptorsMsg, 1, descriptors.size());
41     RunContentDescriptor descriptor = ContainerUtil.getFirstItem(descriptors);
42     return ObjectUtils.notNull(descriptor);
43   }
44
45   public static void terminateAllRunningDescriptors(@NotNull ExecutionManager executionManager) {
46     List<RunContentDescriptor> descriptors = ((ExecutionManagerImpl)executionManager).getRunningDescriptors(Conditions.alwaysTrue());
47     for (RunContentDescriptor descriptor : descriptors) {
48       ProcessHandler processHandler = descriptor.getProcessHandler();
49       if (processHandler != null) {
50         ScriptRunnerUtil.terminateProcessHandler(processHandler, 0, null);
51       }
52     }
53   }
54
55   @NotNull
56   private static String stringifyDescriptors(@NotNull List<RunContentDescriptor> descriptors) {
57     return "Actual descriptors: " + StringUtil.join(descriptors, new Function<RunContentDescriptor, String>() {
58       @Override
59       public String fun(RunContentDescriptor descriptor) {
60         if (descriptor == null) {
61           return "null";
62         }
63         ProcessHandler processHandler = descriptor.getProcessHandler();
64         return String.format("[%s, %s]",
65                              descriptor.getDisplayName(),
66                              processHandler != null ? processHandler.getClass().getName() : null);
67       }
68     }, ", ");
69   }
70 }