diff --git a/runtime/src/main/java/dev/ionfusion/runtime/_private/cover/CoverageDatabase.java b/runtime/src/main/java/dev/ionfusion/runtime/_private/cover/CoverageDatabase.java index a42d64e3..1856a6b7 100644 --- a/runtime/src/main/java/dev/ionfusion/runtime/_private/cover/CoverageDatabase.java +++ b/runtime/src/main/java/dev/ionfusion/runtime/_private/cover/CoverageDatabase.java @@ -9,6 +9,7 @@ import static java.nio.file.Files.isRegularFile; import static java.nio.file.Files.newDirectoryStream; +import com.amazon.ion.IonException; import com.amazon.ion.IonReader; import com.amazon.ion.IonType; import com.amazon.ion.IonWriter; @@ -584,7 +585,7 @@ private void loadSession(Path session) } } } - catch (IOException e) + catch (IOException | IonException e) { String msg = "Error reading coverage data at " + session; throw new IOException(msg, e); diff --git a/runtime/src/test/java/dev/ionfusion/fusion/cli/CliTestCase.java b/runtime/src/test/java/dev/ionfusion/fusion/cli/CliTestCase.java index 82d2b591..563188d4 100644 --- a/runtime/src/test/java/dev/ionfusion/fusion/cli/CliTestCase.java +++ b/runtime/src/test/java/dev/ionfusion/fusion/cli/CliTestCase.java @@ -28,10 +28,16 @@ void run(int expectedErrorCode, String... commandLine) { int errorCode = execute(commandLine); - assertEquals(expectedErrorCode, errorCode, "error code"); - stdoutText = stdoutToString(); stderrText = stderrToString(); + + if (expectedErrorCode != errorCode) + { + dumpStdout(); + dumpStderr(); + } + + assertEquals(expectedErrorCode, errorCode, "error code"); } private int execute(String... commandLine) diff --git a/testing/src/main/java/dev/ionfusion/testing/Reflect.java b/testing/src/main/java/dev/ionfusion/testing/Reflect.java index 9f108910..015d8774 100644 --- a/testing/src/main/java/dev/ionfusion/testing/Reflect.java +++ b/testing/src/main/java/dev/ionfusion/testing/Reflect.java @@ -4,6 +4,7 @@ package dev.ionfusion.testing; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import java.beans.IntrospectionException; import java.beans.Introspector; @@ -91,6 +92,10 @@ public static void assertEqualProperties(Object expected, Object actual) if (prop.getName().equals("class")) continue; Method readMethod = prop.getReadMethod(); + assertNotNull(readMethod, + "No public getter for property " + prop.getName() + + " on " + expected.getClass().getName()); + Object expectedPropertyValue = invoke(expected, readMethod); Object actualPropertyValue = invoke(actual, readMethod); diff --git a/testing/src/main/java/dev/ionfusion/testing/StdioTestCase.java b/testing/src/main/java/dev/ionfusion/testing/StdioTestCase.java index c102ef05..b46daa78 100644 --- a/testing/src/main/java/dev/ionfusion/testing/StdioTestCase.java +++ b/testing/src/main/java/dev/ionfusion/testing/StdioTestCase.java @@ -79,6 +79,21 @@ protected String stderrToString() } + protected void dumpStdout() + { + System.out.println("🔻stdout"); + System.out.print(stdoutToString()); + System.out.println("🔺stdout"); + } + + protected void dumpStderr() + { + System.out.println("🔻stderr"); + System.out.print(stderrToString()); + System.out.println("🔺stderr"); + } + + private String toString(ByteArrayOutputStream bytes) { try