From ffd54a7ec67f2d29cca8daa2c866828d1a3d9e34 Mon Sep 17 00:00:00 2001 From: Rob Greene Date: Sun, 12 Oct 2025 18:25:24 -0500 Subject: [PATCH] Updating CLTH to 2.0 along with the related CLI tests. --- .../applecommander/ui/AcCommandLineTest.java | 8 +++++- .../acx/AcxCommandLineTest.java | 8 +++++- .../src/test/resources/ac-config.yml | 23 ++++++++++++---- .../src/test/resources/acx-config.yml | 26 ++++++++++++++----- build.gradle | 2 +- 5 files changed, 53 insertions(+), 14 deletions(-) diff --git a/app/cli-tests/src/test/java/com/webcodepro/applecommander/ui/AcCommandLineTest.java b/app/cli-tests/src/test/java/com/webcodepro/applecommander/ui/AcCommandLineTest.java index 0a84d08c..d6b86939 100644 --- a/app/cli-tests/src/test/java/com/webcodepro/applecommander/ui/AcCommandLineTest.java +++ b/app/cli-tests/src/test/java/com/webcodepro/applecommander/ui/AcCommandLineTest.java @@ -29,6 +29,7 @@ import org.junit.jupiter.params.provider.MethodSource; import java.io.IOException; import java.io.InputStream; import java.io.UncheckedIOException; +import java.nio.file.Path; import java.util.stream.Stream; import io.github.a2geek.clth.TestSuite; @@ -37,7 +38,12 @@ public class AcCommandLineTest { @ParameterizedTest(name = "{1}: {2}") @MethodSource("testCases") public void test(TestSuite testSuite, String name, String parameters) { - TestHarness.run(testSuite, JUnitHelper::execute, TestHarness.FilePreservation.DELETE); + TestHarness.Settings settings = TestHarness.settings() + .deleteFiles() + .baseDirectory(Path.of("cli-tests/src/test/resources")) + .enableAlwaysShowOutput() + .get(); + TestHarness.run(testSuite, JUnitHelper::execute, settings); } public static Stream testCases() { diff --git a/app/cli-tests/src/test/java/io/github/applecommander/acx/AcxCommandLineTest.java b/app/cli-tests/src/test/java/io/github/applecommander/acx/AcxCommandLineTest.java index e0b09b2f..b30935cc 100644 --- a/app/cli-tests/src/test/java/io/github/applecommander/acx/AcxCommandLineTest.java +++ b/app/cli-tests/src/test/java/io/github/applecommander/acx/AcxCommandLineTest.java @@ -29,6 +29,7 @@ import org.junit.jupiter.params.provider.MethodSource; import java.io.IOException; import java.io.InputStream; import java.io.UncheckedIOException; +import java.nio.file.Path; import java.util.stream.Stream; import io.github.a2geek.clth.TestSuite; @@ -37,7 +38,12 @@ public class AcxCommandLineTest { @ParameterizedTest(name = "{1}: {2}") @MethodSource("testCases") public void test(TestSuite testSuite, String name, String parameters) { - TestHarness.run(testSuite, JUnitHelper::execute, TestHarness.FilePreservation.DELETE); + TestHarness.Settings settings = TestHarness.settings() + .deleteFiles() + .baseDirectory(Path.of("cli-tests/src/test/resources")) + .enableAlwaysShowOutput() + .get(); + TestHarness.run(testSuite, JUnitHelper::execute, settings); } public static Stream testCases() { diff --git a/app/cli-tests/src/test/resources/ac-config.yml b/app/cli-tests/src/test/resources/ac-config.yml index 971b3aa0..416f188f 100644 --- a/app/cli-tests/src/test/resources/ac-config.yml +++ b/app/cli-tests/src/test/resources/ac-config.yml @@ -35,7 +35,7 @@ files: suffix: .po tests: - - name: ticket192-ac + - name: ticket192 variables: # All arrays must be same length -- only iterated over, not matrixed flag: ["-dos140", "-pro140", "-pas140"] @@ -54,6 +54,15 @@ tests: volname: ["", "TEST"] disk: ["$testdisk.dsk", "$testdisk.po"] format: ["Disk Format: DOS 3.3", "Disk Format: ProDOS"] + directory: + - | + .*T 003 TEXTFILE.* + .*A 002 BASFILE.* + .*B 002 BINFILE.* + - | + .*TEXTFILE TXT 001.* + .*BASFILE BAS 001.* + .*BINFILE BIN 001.* steps: # Create our image - command: ac $flag $disk $volname @@ -65,16 +74,20 @@ tests: stdin: $binfile # List image - command: ac -i $disk - match: contains + criteria: + match: contains stdout: $format - command: ac -l $disk - match: contains - stdout: TEXTFILE + criteria: + match: regex + whitespace: ignore + stdout: $directory # Verify contents of files - command: ac -e $disk TEXTFILE stdout: $txtfile - command: ac -e $disk BASFILE - match: trim + criteria: + whitespace: trim stdout: | 10 TEXT : HOME 20 PRINT "HELLO, WORLD" diff --git a/app/cli-tests/src/test/resources/acx-config.yml b/app/cli-tests/src/test/resources/acx-config.yml index 6f923f11..c83eb624 100644 --- a/app/cli-tests/src/test/resources/acx-config.yml +++ b/app/cli-tests/src/test/resources/acx-config.yml @@ -69,7 +69,7 @@ files: suffix: .po tests: - - name: ticket192-acx + - name: ticket192 variables: # All arrays must be same length -- only iterated over, not matrixed flag: ["--dos", "--prodos", "--pascal"] @@ -85,6 +85,15 @@ tests: volname: ["", "TEST"] disk: ["$testdisk.dsk", "$testdisk.po"] format: ["Disk Format: DOS 3.3", "Disk Format: ProDOS"] + directory: + - | + .*T 003 TEXTFILE.* + .*A 002 BASFILE.* + .*B 002 BINFILE.* + - | + .*TEXTFILE TXT 001.* + .*BASFILE BAS 001.* + .*BINFILE BIN 001.* # Note that DOS assumes 6502 while ProDOS assumes 65C02... disassembly: ["$disassemblyDOS", "$disassemblyPRODOS"] steps: @@ -95,20 +104,25 @@ tests: - command: acx import -d $disk --name BINFILE --binary --addr=0x300 $binfile # List image - command: acx info -d $disk - match: contains + criteria: + match: contains stdout: $format - command: acx list -d $disk - match: contains - stdout: TEXTFILE + criteria: + match: regex + whitespace: ignore + stdout: $directory # Verify contents of files - command: acx get -d $disk TEXTFILE stdout: $txtfile - command: acx get -d $disk BASFILE - match: trim + criteria: + whitespace: trim stdout: | 10 TEXT : HOME 20 PRINT "HELLO, WORLD" 30 END - command: acx get -d $disk BINFILE --assembly - match: trim + criteria: + whitespace: trim stdout: $disassembly diff --git a/build.gradle b/build.gradle index 6acc18e5..c6c0cf90 100644 --- a/build.gradle +++ b/build.gradle @@ -17,5 +17,5 @@ ext { springBoot = "2.7.18" acdasmVersion = "6.1" graalvmBuildVersion = "0.10.6" - clthVersion = "1.3" + clthVersion = "2.0" }