From 3aa04f6b6216e7b6eff2866389b95c4547de8f9d Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 20 Jun 2023 18:46:08 +0100 Subject: Allow example tests to adjust binary executable name --- .../shedlang/compiler/backends/ExampleTests.java | 12 ++++++----- .../compiler/backends/llvm/LlvmExampleTests.java | 5 +++++ .../compiler/backends/wasm/WasmExampleTests.java | 23 ++++++++++++++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 src/test/java/org/shedlang/compiler/backends/wasm/WasmExampleTests.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 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 command) throws IOException, InterruptedException { + private ExecutionResult run(String binary) throws IOException, InterruptedException { var fullCommand = binaryRunner() - .>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 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 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 binaryRunner() { + return Optional.of("wasmtime"); + } + + @Override + protected String executableName(String binary) { + return binary + ".wasm"; + } +} -- cgit v1.2.3