mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-171368: execution: (test) Add RunnerMediatedCommandLineTest
This runs the common GeneralCommandLine test suite with a command line being wrapped with the `runnerw.exe` mediator. Note that arguments passing is actually broken now, these tests just reveal that, so failures are expected.
This commit is contained in:
+17
-13
@@ -138,6 +138,11 @@ public class GeneralCommandLineTest {
|
||||
return new GeneralCommandLine(command);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected GeneralCommandLine postProcessCommandLine(@NotNull GeneralCommandLine commandLine) {
|
||||
return commandLine;
|
||||
}
|
||||
|
||||
protected void assumeCanTestWindowsShell() {
|
||||
assumeTrue("Windows-only test", SystemInfo.isWindows);
|
||||
}
|
||||
@@ -423,16 +428,15 @@ public class GeneralCommandLineTest {
|
||||
checkEnvPassing(command, env, expected, false);
|
||||
}
|
||||
|
||||
|
||||
private static String execAndGetOutput(GeneralCommandLine commandLine) throws ExecutionException {
|
||||
ProcessOutput output = ExecUtil.execAndGetOutput(commandLine);
|
||||
@NotNull
|
||||
private String execAndGetOutput(@NotNull GeneralCommandLine commandLine) throws ExecutionException {
|
||||
ProcessOutput output = ExecUtil.execAndGetOutput(postProcessCommandLine(commandLine));
|
||||
int ec = output.getExitCode();
|
||||
if (ec != 0) {
|
||||
if (ec != 0 || !output.getStderr().isEmpty()) {
|
||||
fail("Command:\n" + commandLine.getPreparedCommandLine() +
|
||||
"\nStdOut:\n" + output.getStdout() +
|
||||
"\nStdErr:\n" + output.getStderr());
|
||||
}
|
||||
assertTrue(output.getStderr(), output.getStderr().isEmpty());
|
||||
return output.getStdout();
|
||||
}
|
||||
|
||||
@@ -476,7 +480,7 @@ public class GeneralCommandLineTest {
|
||||
return pair(commandLine, out);
|
||||
}
|
||||
|
||||
private static String execHelper(Pair<GeneralCommandLine, File> pair) throws IOException, ExecutionException {
|
||||
private String execHelper(Pair<GeneralCommandLine, File> pair) throws IOException, ExecutionException {
|
||||
try {
|
||||
execAndGetOutput(pair.first);
|
||||
return FileUtil.loadFile(pair.second, CommandTestHelper.ENC);
|
||||
@@ -490,16 +494,16 @@ public class GeneralCommandLineTest {
|
||||
assertEquals(StringUtil.join(expected, "\n") + "\n", StringUtil.convertLineSeparators(output));
|
||||
}
|
||||
|
||||
private static void checkEnvPassing(Pair<GeneralCommandLine, File> command,
|
||||
Map<String, String> testEnv,
|
||||
boolean passParentEnv) throws ExecutionException, IOException {
|
||||
private void checkEnvPassing(Pair<GeneralCommandLine, File> command,
|
||||
Map<String, String> testEnv,
|
||||
boolean passParentEnv) throws ExecutionException, IOException {
|
||||
checkEnvPassing(command, testEnv, testEnv, passParentEnv);
|
||||
}
|
||||
|
||||
private static void checkEnvPassing(Pair<GeneralCommandLine, File> command,
|
||||
Map<String, String> testEnv,
|
||||
Map<String, String> expectedOutputEnv,
|
||||
boolean passParentEnv) throws ExecutionException, IOException {
|
||||
private void checkEnvPassing(Pair<GeneralCommandLine, File> command,
|
||||
Map<String, String> testEnv,
|
||||
Map<String, String> expectedOutputEnv,
|
||||
boolean passParentEnv) throws ExecutionException, IOException {
|
||||
command.first.withEnvironment(testEnv);
|
||||
command.first.withParentEnvironmentType(passParentEnv ? ParentEnvironmentType.SYSTEM : ParentEnvironmentType.NONE);
|
||||
String output = execHelper(command);
|
||||
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2000-2017 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.process;
|
||||
|
||||
import com.intellij.execution.GeneralCommandLineTest;
|
||||
import com.intellij.execution.configurations.GeneralCommandLine;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
|
||||
public class RunnerMediatedCommandLineTest extends GeneralCommandLineTest {
|
||||
@Override
|
||||
protected GeneralCommandLine createCommandLine(String... command) {
|
||||
assumeTrue(SystemInfo.isWindows);
|
||||
return super.createCommandLine(command);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected GeneralCommandLine postProcessCommandLine(@NotNull GeneralCommandLine commandLine) {
|
||||
boolean injected = RunnerMediator.injectRunnerCommand(super.postProcessCommandLine(commandLine));
|
||||
assumeTrue("runner mediator not found", injected);
|
||||
return commandLine;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void assumeCanTestWindowsShell() {
|
||||
assumeTrue(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printCommandLine() {
|
||||
assumeTrue(false);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user