From 74df9e0559c20f4aed570f80f7584a36b5c5f39a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 25 Dec 2023 12:11:31 +0000 Subject: Extract ExampleTests::runTest() --- .../shedlang/compiler/backends/ExampleTests.java | 47 ++++++++++++---------- 1 file changed, 25 insertions(+), 22 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 fd807447..60c047da 100644 --- a/src/test/java/org/shedlang/compiler/backends/ExampleTests.java +++ b/src/test/java/org/shedlang/compiler/backends/ExampleTests.java @@ -11,6 +11,7 @@ import org.shedlang.compiler.testing.ExecutionResult; import org.shedlang.compiler.testing.TestProcessRunner; import org.shedlang.compiler.util.P; +import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; @@ -27,31 +28,33 @@ public abstract class ExampleTests { .listFiles(file -> file.isDirectory())) .map(exampleDirectory -> DynamicTest.dynamicTest( exampleDirectory.getName(), - () -> { - Assumptions.assumeFalse(isDisabled(exampleDirectory.getName())); - var backend = backend(); - var compiler = new ShedCompiler(); - - var config = ProjectConfig.read(exampleDirectory.toPath()); - for (var example : config.examples()) { - try { - compiler.compile(exampleDirectory.toPath(), backend); - } catch (CompilerError error) { - if (example.expectedError().isPresent()) { - assertThat(error.getMessage(), equalTo(example.expectedError().get())); - return; - } + () -> runTest(exampleDirectory) + )); + } - System.err.println(error.source().describe()); - throw error; - } + private void runTest(File exampleDirectory) throws IOException, InterruptedException { + Assumptions.assumeFalse(isDisabled(exampleDirectory.getName())); + var backend = backend(); + var compiler = new ShedCompiler(); - var binPath = config.targetDir().resolve(backend.targetName()).resolve(example.bin()).toString(); - var result = runExampleBinary(binPath).throwOnError(); - assertThat(result.stdout(), equalTo(example.expectedOutput().orElseThrow())); - } + var config = ProjectConfig.read(exampleDirectory.toPath()); + for (var example : config.examples()) { + try { + compiler.compile(exampleDirectory.toPath(), backend); + } catch (CompilerError error) { + if (example.expectedError().isPresent()) { + assertThat(error.getMessage(), equalTo(example.expectedError().get())); + return; } - )); + + System.err.println(error.source().describe()); + throw error; + } + + var binPath = config.targetDir().resolve(backend.targetName()).resolve(example.bin()).toString(); + var result = runExampleBinary(binPath).throwOnError(); + assertThat(result.stdout(), equalTo(example.expectedOutput().orElseThrow())); + } } private ExecutionResult runExampleBinary(String binary) throws IOException, InterruptedException { -- cgit v1.2.3