package org.shedlang.compiler.testing; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.stream.Collectors; public class TestProcessRunner { private TestProcessRunner() { } /** * Run a process until it exits, capturing its stdout and stderr. */ public static ExecutionResult runCaptureOutput(List command) throws IOException, InterruptedException { var process = new ProcessBuilder() .command(command) .start(); var exitCode = process.waitFor(); try ( var stdoutReader = process.inputReader(StandardCharsets.UTF_8); var stderrReader = process.errorReader(StandardCharsets.UTF_8) ) { var stdout = stdoutReader.lines().collect(Collectors.joining("\n")); var stderr = stderrReader.lines().collect(Collectors.joining("\n")); return new ExecutionResult(exitCode, stdout, stderr); } } }