From 2d0ea7d1e81f708aaf9066fc92784d7b44ff3e74 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 19 Jul 2023 20:14:17 +0100 Subject: Tidy up functions for running processes --- .../shedlang/compiler/backends/ExampleTests.java | 8 ++--- .../structure/WasmBinaryFormatModuleTests.java | 4 +-- .../backends/wasm/structure/WasmObjdump.java | 4 +-- .../shedlang/compiler/testing/ProcessRunner.java | 31 -------------------- .../compiler/testing/TestProcessRunner.java | 34 ++++++++++++++++++++++ 5 files changed, 42 insertions(+), 39 deletions(-) delete mode 100644 src/test/java/org/shedlang/compiler/testing/ProcessRunner.java create mode 100644 src/test/java/org/shedlang/compiler/testing/TestProcessRunner.java (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/backends/ExampleTests.java b/src/test/java/org/shedlang/compiler/backends/ExampleTests.java index 271b2c5c..551e553b 100644 --- a/src/test/java/org/shedlang/compiler/backends/ExampleTests.java +++ b/src/test/java/org/shedlang/compiler/backends/ExampleTests.java @@ -6,7 +6,7 @@ import org.shedlang.compiler.ShedCompiler; import org.shedlang.compiler.backends.llvm.ExecutionResult; import org.shedlang.compiler.config.ProjectConfig; import org.shedlang.compiler.filesystem.ShedCompilerFiles; -import org.shedlang.compiler.testing.ProcessRunner; +import org.shedlang.compiler.testing.TestProcessRunner; import org.shedlang.compiler.util.P; import java.io.IOException; @@ -34,20 +34,20 @@ public abstract class ExampleTests { var config = ProjectConfig.read(exampleDirectory.toPath()); for (var example : config.examples()) { var binPath = config.targetDir().resolve(backend.name()).resolve(example.bin()).toString(); - var result = run(binPath).throwOnError(); + var result = runExampleBinary(binPath).throwOnError(); assertThat(result.stdout(), equalTo(example.expectedOutput())); } } )); } - private ExecutionResult run(String binary) throws IOException, InterruptedException { + private ExecutionResult runExampleBinary(String binary) throws IOException, InterruptedException { var fullCommand = binaryRunner() .map(binaryRunner -> P.vector(binaryRunner)) .orElse(P.vector()) .plus(executableName(binary)); - return ProcessRunner.run(fullCommand); + return TestProcessRunner.runCaptureOutput(fullCommand); } protected abstract Backend backend(); diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormatModuleTests.java b/src/test/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormatModuleTests.java index 99b92179..203e5db9 100644 --- a/src/test/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormatModuleTests.java +++ b/src/test/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormatModuleTests.java @@ -8,7 +8,7 @@ import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmI64Con import org.shedlang.compiler.backends.wasm.structure.ast.linking.WasmInitFunc; import org.shedlang.compiler.backends.wasm.structure.ast.modules.*; import org.shedlang.compiler.backends.wasm.structure.ast.types.*; -import org.shedlang.compiler.testing.ProcessRunner; +import org.shedlang.compiler.testing.TestProcessRunner; import org.shedlang.compiler.testing.snapshots.SnapshotResolver; import org.shedlang.compiler.testing.snapshots.Snapshotter; @@ -361,7 +361,7 @@ public class WasmBinaryFormatModuleTests { } private void validate(Path path) throws IOException, InterruptedException { - ProcessRunner.run(List.of("wasm-validate", "--enable-exceptions", path.toString())) + TestProcessRunner.runCaptureOutput(List.of("wasm-validate", "--enable-exceptions", path.toString())) .throwOnError(); } } diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/structure/WasmObjdump.java b/src/test/java/org/shedlang/compiler/backends/wasm/structure/WasmObjdump.java index 8caadd1a..60133124 100644 --- a/src/test/java/org/shedlang/compiler/backends/wasm/structure/WasmObjdump.java +++ b/src/test/java/org/shedlang/compiler/backends/wasm/structure/WasmObjdump.java @@ -1,7 +1,7 @@ package org.shedlang.compiler.backends.wasm.structure; import org.shedlang.compiler.backends.wasm.structure.ast.modules.WasmModule; -import org.shedlang.compiler.testing.ProcessRunner; +import org.shedlang.compiler.testing.TestProcessRunner; import java.io.FileOutputStream; import java.io.IOException; @@ -23,6 +23,6 @@ public class WasmObjdump { } public static String objdump(Path path) throws IOException, InterruptedException { - return ProcessRunner.run(List.of("wasm-objdump", "-dx", path.toString())).throwOnError().stdout(); + return TestProcessRunner.runCaptureOutput(List.of("wasm-objdump", "-dx", path.toString())).throwOnError().stdout(); } } diff --git a/src/test/java/org/shedlang/compiler/testing/ProcessRunner.java b/src/test/java/org/shedlang/compiler/testing/ProcessRunner.java deleted file mode 100644 index 8a824424..00000000 --- a/src/test/java/org/shedlang/compiler/testing/ProcessRunner.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.shedlang.compiler.testing; - -import org.shedlang.compiler.backends.llvm.ExecutionResult; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.List; -import java.util.stream.Collectors; - -public class ProcessRunner { - private ProcessRunner() { - } - - public static ExecutionResult run(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); - } - } -} diff --git a/src/test/java/org/shedlang/compiler/testing/TestProcessRunner.java b/src/test/java/org/shedlang/compiler/testing/TestProcessRunner.java new file mode 100644 index 00000000..1c84e16f --- /dev/null +++ b/src/test/java/org/shedlang/compiler/testing/TestProcessRunner.java @@ -0,0 +1,34 @@ +package org.shedlang.compiler.testing; + +import org.shedlang.compiler.backends.llvm.ExecutionResult; + +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); + } + } +} -- cgit v1.2.3