diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-20 18:41:42 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-20 18:41:42 +0100 |
| commit | 9a19409b88b67a1ce390272bb81e2bbea7dae561 (patch) | |
| tree | 363eddbe82bf6c6a614fd3cc573eff831f3f1624 /src/test/java | |
| parent | f3c896b942d87ea15d4351b1819a282eef67f624 (diff) | |
Have example subtypes override binary runner instead of run method
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/ExampleTests.java | 28 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java | 23 |
2 files changed, 30 insertions, 21 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/ExampleTests.java b/src/test/java/org/shedlang/compiler/backends/ExampleTests.java index 2b453d4a..a153bc3b 100644 --- a/src/test/java/org/shedlang/compiler/backends/ExampleTests.java +++ b/src/test/java/org/shedlang/compiler/backends/ExampleTests.java @@ -6,10 +6,14 @@ 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.util.P; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; import java.util.stream.Stream; import static org.zwobble.precisely.AssertThat.assertThat; @@ -40,7 +44,29 @@ public abstract class ExampleTests { )); } + private ExecutionResult run(List<String> command) throws IOException, InterruptedException { + var fullCommand = binaryRunner() + .<List<String>>map(binaryRunner -> P.vector(binaryRunner).plusAll(command)) + .orElse(command); + + var process = new ProcessBuilder() + .command(fullCommand) + .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()); + var stderr = stderrReader.lines().collect(Collectors.joining()); + + return new ExecutionResult(exitCode, stdout, stderr); + } + } + protected abstract Backend backend(); - protected abstract ExecutionResult run(List<String> commands) throws IOException, InterruptedException; + protected abstract Optional<String> binaryRunner(); } diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java index 4822efdd..c69a0fbb 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java @@ -3,10 +3,7 @@ package org.shedlang.compiler.backends.llvm; import org.shedlang.compiler.backends.Backend; import org.shedlang.compiler.backends.ExampleTests; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.List; -import java.util.stream.Collectors; +import java.util.Optional; public class LlvmExampleTests extends ExampleTests { @Override @@ -15,21 +12,7 @@ public class LlvmExampleTests extends ExampleTests { } @Override - protected ExecutionResult run(List<String> 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()); - var stderr = stderrReader.lines().collect(Collectors.joining()); - - return new ExecutionResult(exitCode, stdout, stderr); - } + protected Optional<String> binaryRunner() { + return Optional.empty(); } } |
