diff --git a/platform/testFramework/testSrc/com/intellij/testFramework/vcs/TestClientRunner.java b/platform/testFramework/testSrc/com/intellij/testFramework/vcs/TestClientRunner.java index d5f9e88e4ab4..88985a81797b 100644 --- a/platform/testFramework/testSrc/com/intellij/testFramework/vcs/TestClientRunner.java +++ b/platform/testFramework/testSrc/com/intellij/testFramework/vcs/TestClientRunner.java @@ -19,10 +19,9 @@ import com.intellij.execution.process.CapturingProcessHandler; import com.intellij.execution.process.ProcessOutput; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.SystemInfo; -import com.intellij.openapi.util.io.StreamUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.CharsetToolkit; -import com.intellij.util.ExceptionUtil; +import com.intellij.util.EnvironmentUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -108,15 +107,7 @@ public class TestClientRunner { } if (result.isTimeout()) { - String diagnostics = "none"; - try { - Process p = Runtime.getRuntime().exec(SystemInfo.isWindows ? System.getenv("windir") +"\\system32\\tasklist.exe /v" : "ps a"); - diagnostics = StreamUtil.readText(p.getInputStream()); - } - catch (IOException e) { - diagnostics = ExceptionUtil.getThrowableText(e); - } - throw new RuntimeException("Timeout waiting for VCS client to finish execution:\n" + diagnostics); + throw new RuntimeException("Timeout waiting for VCS client to finish execution:\n" + EnvironmentUtil.getProcessList()); } return result; } diff --git a/platform/util/src/com/intellij/util/EnvironmentUtil.java b/platform/util/src/com/intellij/util/EnvironmentUtil.java index eabdd2a21789..80de510bef60 100644 --- a/platform/util/src/com/intellij/util/EnvironmentUtil.java +++ b/platform/util/src/com/intellij/util/EnvironmentUtil.java @@ -23,6 +23,7 @@ import com.intellij.openapi.util.AtomicNotNullLazyValue; import com.intellij.openapi.util.NotNullLazyValue; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.util.io.StreamUtil; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.concurrency.FixedFuture; @@ -33,6 +34,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; import java.io.File; +import java.io.IOException; import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; @@ -203,6 +205,18 @@ public class EnvironmentUtil { return Collections.unmodifiableMap(newEnv); } + public static String getProcessList() { + String diagnostics; + try { + Process p = Runtime.getRuntime().exec(SystemInfo.isWindows ? System.getenv("windir") +"\\system32\\tasklist.exe /v" : "ps a"); + diagnostics = StreamUtil.readText(p.getInputStream()); + } + catch (IOException e) { + diagnostics = ExceptionUtil.getThrowableText(e); + } + return diagnostics; + } + private static class ProcessKiller { private final Process myProcess; private final Object myWaiter = new Object();