From 9a19409b88b67a1ce390272bb81e2bbea7dae561 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 20 Jun 2023 18:41:42 +0100 Subject: Have example subtypes override binary runner instead of run method --- .../shedlang/compiler/backends/ExampleTests.java | 28 +++++++++++++++++++++- .../compiler/backends/llvm/LlvmExampleTests.java | 23 +++--------------- 2 files changed, 30 insertions(+), 21 deletions(-) (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 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 command) throws IOException, InterruptedException { + var fullCommand = binaryRunner() + .>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 commands) throws IOException, InterruptedException; + protected abstract Optional 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 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 binaryRunner() { + return Optional.empty(); } } -- cgit v1.2.3