aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-20 18:41:42 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-20 18:41:42 +0100
commit9a19409b88b67a1ce390272bb81e2bbea7dae561 (patch)
tree363eddbe82bf6c6a614fd3cc573eff831f3f1624 /src/test/java
parentf3c896b942d87ea15d4351b1819a282eef67f624 (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.java28
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java23
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();
}
}