From b1bfc0f72d81f4fa29bb9c6212277641c75c15b9 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Fri, 11 Jan 2013 21:52:23 +0100 Subject: [PATCH] IDEA-98218 (test prepared) --- .../intellij/execution/EnvPassingTest.java | 6 +- .../execution/GeneralCommandLineTest.java | 79 +++++++----------- .../intellij/execution/ParamPassingTest.java | 26 ++++++ .../com/intellij/execution/printArgs.c | 14 ---- .../com/intellij/execution/printArgs.exe | Bin 44544 -> 0 bytes 5 files changed, 55 insertions(+), 70 deletions(-) create mode 100644 platform/platform-tests/testSrc/com/intellij/execution/ParamPassingTest.java delete mode 100644 platform/platform-tests/testSrc/com/intellij/execution/printArgs.c delete mode 100644 platform/platform-tests/testSrc/com/intellij/execution/printArgs.exe diff --git a/platform/platform-tests/testSrc/com/intellij/execution/EnvPassingTest.java b/platform/platform-tests/testSrc/com/intellij/execution/EnvPassingTest.java index b53e701c92c5..525c2d82cccb 100644 --- a/platform/platform-tests/testSrc/com/intellij/execution/EnvPassingTest.java +++ b/platform/platform-tests/testSrc/com/intellij/execution/EnvPassingTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -17,10 +17,6 @@ package com.intellij.execution; import java.util.Map; -/** - * Invoked from {@link GeneralCommandLineTest} as external process. - */ -@SuppressWarnings("UtilityClassWithoutPrivateConstructor") public class EnvPassingTest { public static void main(String[] args) { final Map environment = System.getenv(); diff --git a/platform/platform-tests/testSrc/com/intellij/execution/GeneralCommandLineTest.java b/platform/platform-tests/testSrc/com/intellij/execution/GeneralCommandLineTest.java index 246d6aab46dc..4c137b91f25b 100644 --- a/platform/platform-tests/testSrc/com/intellij/execution/GeneralCommandLineTest.java +++ b/platform/platform-tests/testSrc/com/intellij/execution/GeneralCommandLineTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -16,7 +16,6 @@ package com.intellij.execution; import com.intellij.execution.configurations.GeneralCommandLine; -import com.intellij.execution.util.ExecUtil; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; @@ -46,67 +45,45 @@ public class GeneralCommandLineTest extends UsefulTestCase { } public void testExecuteCommandLine() throws Exception { - final File tempFile; - if (SystemInfo.isWindows) { - final URL url = getClass().getClassLoader().getResource("com/intellij/execution/printArgs.exe"); - assertNotNull(url); - tempFile = FileUtil.createTempFile("path with spaces 'and quotes' ", ".exe"); - FileUtil.copy(new File(url.getFile()), tempFile); - } - else { - tempFile = ExecUtil.createTempExecutableScript( - "path with spaces \"and quotes\" ", ".sh", - "#!/bin/sh\n\n" + - "echo \"=====\"\n" + - "for f in \"$@\" ; do echo \"$f\"; done\n" + - "echo \"=====\"\n" - ); - } + String[] parameters = { + "with space", "\"quoted\"", "\"quoted with spaces\"", "", " ", "param 1", "\"", "param2", "trailing slash\\" + }; - final String[] parameters = { "with space", "\"quoted\"", "\"quoted with spaces\"", "", " ", "param 1", "\"", "param2", "trailing slash\\" }; - try { - final GeneralCommandLine commandLine = new GeneralCommandLine(); - commandLine.setExePath(tempFile.getCanonicalPath()); - commandLine.addParameters(parameters); - commandLine.setRedirectErrorStream(true); - final Process process = commandLine.createProcess(); - final String output = FileUtil.loadTextAndClose(process.getInputStream()); - final int result = process.waitFor(); + GeneralCommandLine commandLine = makeCommandLine(ParamPassingTest.class); + commandLine.addParameters(parameters); + Process process = commandLine.createProcess(); + String output = FileUtil.loadTextAndClose(process.getInputStream()); + int result = process.waitFor(); - assertEquals("Command:\n" + commandLine.getCommandLineString() + "\nOutput:\n" + output, - 0, result); - assertEquals("=====\n" + StringUtil.join(parameters, "\n") + "\n=====\n", - StringUtil.convertLineSeparators(output)); - } - finally { - FileUtil.delete(tempFile); - } + assertEquals("Command:\n" + commandLine.getCommandLineString() + "\nOutput:\n" + output, 0, result); + assertEquals("=====\n" + StringUtil.join(parameters, "\n") + "\n=====\n", StringUtil.convertLineSeparators(output)); } public void testEnvironmentPassing() throws Exception { - final URL url = getClass().getClassLoader().getResource("com/intellij/execution/EnvPassingTest.class"); - assertNotNull(url); - final File testClass = new File(url.getFile()); - - final String javaHome = System.getenv("JAVA_HOME"); - final GeneralCommandLine commandLine = new GeneralCommandLine(); - commandLine.setExePath(javaHome != null ? javaHome + "/bin/java" : "java"); - commandLine.addParameter("-cp"); - commandLine.addParameter(testClass.getParentFile().getParentFile().getParentFile().getParentFile().getAbsolutePath()); - commandLine.addParameter("com.intellij.execution." + testClass.getName().replace(".class", "")); - commandLine.setRedirectErrorStream(true); - - final Map testEnv = new HashMap(); + Map testEnv = new HashMap(); testEnv.put("VALUE_1", "some value"); testEnv.put("VALUE_2", "another\n\"value\""); + GeneralCommandLine commandLine = makeCommandLine(EnvPassingTest.class); checkEnvPassing(commandLine, testEnv, true); checkEnvPassing(commandLine, testEnv, false); } - private static void checkEnvPassing(final GeneralCommandLine commandLine, - final Map testEnv, - final boolean passParentEnv) throws Exception { + private GeneralCommandLine makeCommandLine(Class testClass) { + String className = testClass.getName(); + URL url = getClass().getClassLoader().getResource(className.replace(".", "/") + ".class"); + assertNotNull(url); + + GeneralCommandLine commandLine = new GeneralCommandLine(); + commandLine.setExePath(System.getProperty("java.home") + (SystemInfo.isWindows ? "\\bin\\java.exe" : "/bin/java")); + commandLine.addParameter("-cp"); + commandLine.addParameter(new File(url.getFile()).getParentFile().getParentFile().getParentFile().getParentFile().getAbsolutePath()); + commandLine.addParameter(className); + commandLine.setRedirectErrorStream(true); + return commandLine; + } + + private static void checkEnvPassing(GeneralCommandLine commandLine, Map testEnv, boolean passParentEnv) throws Exception { commandLine.setEnvParams(testEnv); commandLine.setPassParentEnvs(passParentEnv); diff --git a/platform/platform-tests/testSrc/com/intellij/execution/ParamPassingTest.java b/platform/platform-tests/testSrc/com/intellij/execution/ParamPassingTest.java new file mode 100644 index 000000000000..ec60ab272828 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/execution/ParamPassingTest.java @@ -0,0 +1,26 @@ +/* + * Copyright 2000-2013 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; + +public class ParamPassingTest { + public static void main(String[] args) { + System.out.println("====="); + for (String arg : args) { + System.out.println(arg); + } + System.out.println("====="); + } +} diff --git a/platform/platform-tests/testSrc/com/intellij/execution/printArgs.c b/platform/platform-tests/testSrc/com/intellij/execution/printArgs.c deleted file mode 100644 index 54ac7debd176..000000000000 --- a/platform/platform-tests/testSrc/com/intellij/execution/printArgs.c +++ /dev/null @@ -1,14 +0,0 @@ -#include - -/** - * Invoked from {@link GeneralCommandLineTest} as external process. - */ -int main(int argc, char *argv[]) { - int i; - printf("=====\n"); - for (i = 1; i < argc; ++i) { - printf("%s\n", argv[i]); - } - printf("=====\n"); - return 0; -} diff --git a/platform/platform-tests/testSrc/com/intellij/execution/printArgs.exe b/platform/platform-tests/testSrc/com/intellij/execution/printArgs.exe deleted file mode 100644 index 13f43e917733026f36e7dbc565aa70991aa3edd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44544 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 L3$$9GnFam@>7+qV