aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-20 18:46:08 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-20 18:46:08 +0100
commit3aa04f6b6216e7b6eff2866389b95c4547de8f9d (patch)
tree7ecbe3079bee24f232fb1bb4fd1178efb66c63f4 /src/test/java
parent9a19409b88b67a1ce390272bb81e2bbea7dae561 (diff)
Allow example tests to adjust binary executable name
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/ExampleTests.java12
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java5
-rw-r--r--src/test/java/org/shedlang/compiler/backends/wasm/WasmExampleTests.java23
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";
+ }
+}