use of com.facebook.buck.util.FakeProcess in project buck by facebook.
the class ShellStepTest method testStdErrPrintedOnErrorIfShouldPrintStdErrEvenIfSilent.
@Test
public void testStdErrPrintedOnErrorIfShouldPrintStdErrEvenIfSilent() throws Exception {
ShellStep command = createCommand(/*shouldPrintStdErr*/
true, /*shouldPrintStdOut*/
false);
ProcessExecutorParams params = createParams();
FakeProcess process = new FakeProcess(EXIT_FAILURE, OUTPUT_MSG, ERROR_MSG);
TestConsole console = new TestConsole(Verbosity.SILENT);
ExecutionContext context = createContext(ImmutableMap.of(params, process), console);
command.launchAndInteractWithProcess(context, params);
assertEquals(ERROR_MSG, console.getTextWrittenToStdErr());
}
use of com.facebook.buck.util.FakeProcess in project buck by facebook.
the class XctoolRunTestsStepTest method xctoolCommandWithTestSelectorMatchingNothingDoesNotFail.
@Test
public void xctoolCommandWithTestSelectorMatchingNothingDoesNotFail() throws Exception {
FakeProjectFilesystem projectFilesystem = new FakeProjectFilesystem();
XctoolRunTestsStep step = new XctoolRunTestsStep(projectFilesystem, Paths.get("/path/to/xctool"), ImmutableMap.of(), Optional.empty(), "iphonesimulator", Optional.empty(), ImmutableSet.of(Paths.get("/path/to/FooTest.xctest"), Paths.get("/path/to/BarTest.xctest")), ImmutableMap.of(), Paths.get("/path/to/output.json"), Optional.empty(), Suppliers.ofInstance(Optional.of(Paths.get("/path/to/developer/dir"))), TestSelectorList.builder().addRawSelectors("Blargh#Xyzzy").build(), false, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
ProcessExecutorParams xctoolListOnlyParams = ProcessExecutorParams.builder().setCommand(ImmutableList.of("/path/to/xctool", "-reporter", "json-stream", "-sdk", "iphonesimulator", "run-tests", "-logicTest", "/path/to/FooTest.xctest", "-logicTest", "/path/to/BarTest.xctest", "-listTestsOnly")).setEnvironment(ImmutableMap.of("DEVELOPER_DIR", "/path/to/developer/dir")).setDirectory(projectFilesystem.getRootPath().toAbsolutePath()).setRedirectOutput(ProcessBuilder.Redirect.PIPE).build();
try (InputStream stdout = getClass().getResourceAsStream("testdata/xctool-output/list-tests-only.json");
InputStream stderr = new ByteArrayInputStream(new byte[0])) {
assertThat(stdout, not(nullValue()));
FakeProcess fakeXctoolListTestsProcess = new FakeProcess(0, ByteStreams.nullOutputStream(), stdout, stderr);
FakeProcessExecutor processExecutor = new FakeProcessExecutor(ImmutableMap.of(xctoolListOnlyParams, fakeXctoolListTestsProcess));
ExecutionContext executionContext = TestExecutionContext.newBuilder().setProcessExecutor(processExecutor).setEnvironment(ImmutableMap.of()).build();
assertThat(step.execute(executionContext).getExitCode(), equalTo(0));
}
}
use of com.facebook.buck.util.FakeProcess in project buck by facebook.
the class XctoolRunTestsStepTest method xctoolCommandWhichFailsPrintsStderrToConsole.
@Test
public void xctoolCommandWhichFailsPrintsStderrToConsole() throws Exception {
FakeProjectFilesystem projectFilesystem = new FakeProjectFilesystem();
XctoolRunTestsStep step = new XctoolRunTestsStep(projectFilesystem, Paths.get("/path/to/xctool"), ImmutableMap.of(), Optional.empty(), "iphonesimulator", Optional.empty(), ImmutableSet.of(Paths.get("/path/to/Foo.xctest")), ImmutableMap.of(), Paths.get("/path/to/output.json"), Optional.empty(), Suppliers.ofInstance(Optional.of(Paths.get("/path/to/developer/dir"))), TestSelectorList.EMPTY, false, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
ProcessExecutorParams xctoolParams = ProcessExecutorParams.builder().setCommand(ImmutableList.of("/path/to/xctool", "-reporter", "json-stream", "-sdk", "iphonesimulator", "run-tests", "-logicTest", "/path/to/Foo.xctest")).setEnvironment(ImmutableMap.of("DEVELOPER_DIR", "/path/to/developer/dir")).setDirectory(projectFilesystem.getRootPath().toAbsolutePath()).setRedirectOutput(ProcessBuilder.Redirect.PIPE).build();
FakeProcess fakeXctoolFailure = new FakeProcess(42, "", "Something went terribly wrong\n");
FakeProcessExecutor processExecutor = new FakeProcessExecutor(ImmutableMap.of(xctoolParams, fakeXctoolFailure));
TestConsole testConsole = new TestConsole();
ExecutionContext executionContext = TestExecutionContext.newBuilder().setProcessExecutor(processExecutor).setEnvironment(ImmutableMap.of()).setConsole(testConsole).build();
assertThat(step.execute(executionContext).getExitCode(), equalTo(42));
assertThat(testConsole.getTextWrittenToStdErr(), equalTo("xctool failed with exit code 42: Something went terribly wrong\n"));
}
use of com.facebook.buck.util.FakeProcess in project buck by facebook.
the class KnownBuildRuleTypesTest method createExecutor.
private ProcessExecutor createExecutor(String javac, String version) {
Map<ProcessExecutorParams, FakeProcess> processMap = new HashMap<>();
FakeProcess process = new FakeProcess(0, "", version);
ProcessExecutorParams params = ProcessExecutorParams.builder().setCommand(ImmutableList.of(javac, "-version")).build();
processMap.put(params, process);
addXcodeSelectProcess(processMap, FAKE_XCODE_DEV_PATH);
processMap.putAll(KnownBuildRuleTypesTestUtil.getPythonProcessMap(KnownBuildRuleTypesTestUtil.getPaths(environment)));
return new FakeProcessExecutor(processMap);
}
use of com.facebook.buck.util.FakeProcess in project buck by facebook.
the class KnownBuildRuleTypesTestUtil method getPythonProcessMap.
protected static ImmutableMap<ProcessExecutorParams, FakeProcess> getPythonProcessMap(List<String> paths) {
Set<String> uniquePaths = new HashSet<>(paths);
ImmutableMap.Builder<ProcessExecutorParams, FakeProcess> processMap = ImmutableMap.builder();
for (Map.Entry<String, String> python : PYTHONS.entrySet()) {
for (String path : uniquePaths) {
for (String extension : new String[] { "", ".exe", ".EXE" }) {
processMap.put(ProcessExecutorParams.builder().setCommand(ImmutableList.of(path + File.separator + python.getKey() + extension, "-")).build(), new FakeProcess(0, "CPython " + python.getValue().replace('.', ' '), ""));
}
}
}
return processMap.build();
}
Aggregations