diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-20 18:46:08 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-20 18:46:08 +0100 |
| commit | 3aa04f6b6216e7b6eff2866389b95c4547de8f9d (patch) | |
| tree | 7ecbe3079bee24f232fb1bb4fd1178efb66c63f4 /src/test/java | |
| parent | 9a19409b88b67a1ce390272bb81e2bbea7dae561 (diff) | |
Allow example tests to adjust binary executable name
Diffstat (limited to 'src/test/java')
3 files changed, 35 insertions, 5 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/ExampleTests.java b/src/test/java/org/shedlang/compiler/backends/ExampleTests.java index a153bc3b..1dcbc3dc 100644 --- a/src/test/java/org/shedlang/compiler/backends/ExampleTests.java +++ b/src/test/java/org/shedlang/compiler/backends/ExampleTests.java @@ -11,7 +11,6 @@ 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; @@ -34,7 +33,7 @@ public abstract class ExampleTests { var config = ProjectConfig.read(exampleDirectory.toPath()); for (var example : config.examples()) { - var result = run(List.of(config.targetDir().resolve(backend.name()).resolve(example.bin()).toString())); + var result = run(config.targetDir().resolve(backend.name()).resolve(example.bin()).toString()); assertThat(result.stderr(), equalTo("")); assertThat(result.stdout(), equalTo(example.expectedOutput())); @@ -44,10 +43,11 @@ public abstract class ExampleTests { )); } - private ExecutionResult run(List<String> command) throws IOException, InterruptedException { + private ExecutionResult run(String binary) throws IOException, InterruptedException { var fullCommand = binaryRunner() - .<List<String>>map(binaryRunner -> P.vector(binaryRunner).plusAll(command)) - .orElse(command); + .map(binaryRunner -> P.vector(binaryRunner)) + .orElse(P.vector()) + .plus(executableName(binary)); var process = new ProcessBuilder() .command(fullCommand) @@ -69,4 +69,6 @@ public abstract class ExampleTests { protected abstract Backend backend(); protected abstract Optional<String> binaryRunner(); + + protected abstract String executableName(String binary); } 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 c69a0fbb..1afde3e0 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java @@ -15,4 +15,9 @@ public class LlvmExampleTests extends ExampleTests { protected Optional<String> binaryRunner() { return Optional.empty(); } + + @Override + protected String executableName(String binary) { + return binary; + } } diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/WasmExampleTests.java b/src/test/java/org/shedlang/compiler/backends/wasm/WasmExampleTests.java new file mode 100644 index 00000000..0b4c7714 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/backends/wasm/WasmExampleTests.java @@ -0,0 +1,23 @@ +package org.shedlang.compiler.backends.wasm; + +import org.shedlang.compiler.backends.Backend; +import org.shedlang.compiler.backends.ExampleTests; + +import java.util.Optional; + +public class WasmExampleTests extends ExampleTests { + @Override + protected Backend backend() { + return new WasmBackend(); + } + + @Override + protected Optional<String> binaryRunner() { + return Optional.of("wasmtime"); + } + + @Override + protected String executableName(String binary) { + return binary + ".wasm"; + } +} |
