diff --git a/src/main/java/rife/bld/operations/AbstractToolProviderOperation.java b/src/main/java/rife/bld/operations/AbstractToolProviderOperation.java index c499574..1344daa 100644 --- a/src/main/java/rife/bld/operations/AbstractToolProviderOperation.java +++ b/src/main/java/rife/bld/operations/AbstractToolProviderOperation.java @@ -159,7 +159,7 @@ public abstract class AbstractToolProviderOperation { - private final List fileOptions_ = new ArrayList<>(); + private final List cmdFiles_ = new ArrayList<>(); private final JpackageOptions jpackageOptions_ = new JpackageOptions(); public JpackageOperation() { @@ -24,7 +24,7 @@ public class JpackageOperation extends AbstractToolProviderOperation '@' + opt).toList()); + toolArgs(cmdFiles_.stream().map(opt -> '@' + opt).toList()); toolArgs(jpackageOptions_); super.execute(); } @@ -35,17 +35,17 @@ public class JpackageOperation extends AbstractToolProviderOperation fileOptions() { - return fileOptions_; + return cmdFiles_; } /** - * Read options and/or mode from a file. + * Read options and/or mode from file(s). * * @param file one or more file * @return this operation instance */ - public JpackageOperation fileOptions(String... file) { - fileOptions_.addAll(List.of(file)); + public JpackageOperation cmdFiles(String... file) { + cmdFiles_.addAll(List.of(file)); return this; } diff --git a/src/test/java/rife/bld/operations/TestJlinkOperation.java b/src/test/java/rife/bld/operations/TestJlinkOperation.java index e8bea79..9baef3e 100644 --- a/src/test/java/rife/bld/operations/TestJlinkOperation.java +++ b/src/test/java/rife/bld/operations/TestJlinkOperation.java @@ -75,6 +75,25 @@ public class TestJlinkOperation { assertEquals("name-2=module-2", options.get("--launcher"), "incorrect launcher"); } + @Test + void testCmdFiles() { + System.setOut(new PrintStream(outputStreamCaptor)); + var jlink = new JlinkOperation().cmdFiles("src/test/resources/jlink/options_jlink.txt"); + assertDoesNotThrow(jlink::execute); + var out = outputStreamCaptor.toString(); + assertTrue(out.contains("List of available plugins:"), out); + } + + @Test + void testCmdFilesMulti() { + System.setOut(new PrintStream(outputStreamCaptor)); + var jlink = new JlinkOperation().cmdFiles("src/test/resources/jlink/options_verbose.txt", + "src/test/resources/jlink/options_version.txt"); + assertDoesNotThrow(jlink::execute); + var out = outputStreamCaptor.toString(); + assertTrue(out.matches("[\\d.]+[\\r\\n]+"), out); + } + @Test void testDisablePlugin() { System.setOut(new PrintStream(outputStreamCaptor)); @@ -113,16 +132,6 @@ public class TestJlinkOperation { } } - @Test - void testFileOptions() { - System.setOut(new PrintStream(outputStreamCaptor)); - var jlink = new JlinkOperation().cmdFiles("src/test/resources/jlink/options_verbose.txt", - "src/test/resources/jlink/options_version.txt"); - assertDoesNotThrow(jlink::execute); - var out = outputStreamCaptor.toString(); - assertTrue(out.matches("[\\d.]+[\\r\\n]+"), out); - } - @Test void testHelp() { var jlink = new JlinkOperation().toolArgs("--help"); @@ -138,15 +147,6 @@ public class TestJlinkOperation { assertThrows(ExitStatusException.class, jlink::execute); } - @Test - void testParseOptions() { - System.setOut(new PrintStream(outputStreamCaptor)); - var jlink = new JlinkOperation().cmdFiles("src/test/resources/jlink/options_jlink.txt"); - assertDoesNotThrow(jlink::execute); - var out = outputStreamCaptor.toString(); - assertTrue(out.contains("List of available plugins:"), out); - } - @Test void testVersion() { System.setOut(new PrintStream(outputStreamCaptor)); diff --git a/src/test/java/rife/bld/operations/TestJmodOperation.java b/src/test/java/rife/bld/operations/TestJmodOperation.java index e62b3b6..ac68b0d 100644 --- a/src/test/java/rife/bld/operations/TestJmodOperation.java +++ b/src/test/java/rife/bld/operations/TestJmodOperation.java @@ -81,6 +81,32 @@ public class TestJmodOperation { } } + @Test + void testCmdFiles() { + System.setOut(new PrintStream(outputStreamCaptor)); + var jmod = new JmodOperation().cmdFiles("src/test/resources/jlink/options_version.txt"); + assertDoesNotThrow(jmod::execute); + var out = outputStreamCaptor.toString(); + assertTrue(out.matches("[\\d.]+[\\r\\n]+"), out); + } + + @Test + void testCmdFilesCreate() throws IOException { + var tmpdir = Files.createTempDirectory("bld-jmod-test").toFile(); + try { + var mod = new File(tmpdir, "dev.mccue.tree.jmod"); + + var jmod = new JmodOperation() + .cmdFiles("src/test/resources/jlink/options_jmod.txt") + .jmodFile(mod.getAbsolutePath()); + + assertDoesNotThrow(jmod::execute); + assertTrue(mod.exists(), "mod does not exist"); + } finally { + FileUtils.deleteDirectory(tmpdir); + } + } + @Test void testCreate() throws IOException { var tmpdir = Files.createTempDirectory("bld-jmod-test").toFile(); @@ -88,6 +114,7 @@ public class TestJmodOperation { var mod = new File(tmpdir, "dev.mccue.tree.jmod"); var options = new JmodOptions() + .date(ZonedDateTime.now()) .legalNotices("src/test/resources/jlink/dev.mccue.apple/legal") .classpath("src/test/resources/jlink/build/jar/dev.mccue.apple.jar"); var jmod = new JmodOperation() @@ -138,15 +165,6 @@ public class TestJmodOperation { } } - @Test - void testFileOptions() { - System.setOut(new PrintStream(outputStreamCaptor)); - var jmod = new JmodOperation().cmdFiles("src/test/resources/jlink/options_version.txt"); - assertDoesNotThrow(jmod::execute); - var out = outputStreamCaptor.toString(); - assertTrue(out.matches("[\\d.]+[\\r\\n]+"), out); - } - @Test void testHelp() { var jmod = new JmodOperation().toolArgs("--help-extra"); diff --git a/src/test/java/rife/bld/operations/TestJpackageOperation.java b/src/test/java/rife/bld/operations/TestJpackageOperation.java index 82c4aaf..35657b0 100644 --- a/src/test/java/rife/bld/operations/TestJpackageOperation.java +++ b/src/test/java/rife/bld/operations/TestJpackageOperation.java @@ -196,9 +196,9 @@ public class TestJpackageOperation { } @Test - void testFileOptions() { + void testCmdFiles() { System.setOut(new PrintStream(outputStreamCaptor)); - var jpackage = new JpackageOperation().fileOptions("src/test/resources/jlink/options_verbose.txt", + var jpackage = new JpackageOperation().cmdFiles("src/test/resources/jlink/options_verbose.txt", "src/test/resources/jlink/options_version.txt"); assertDoesNotThrow(jpackage::execute); var out = outputStreamCaptor.toString(); diff --git a/src/test/resources/jlink/options_jlink.txt b/src/test/resources/jlink/options_jlink.txt index 0d15982..1c35a35 100644 --- a/src/test/resources/jlink/options_jlink.txt +++ b/src/test/resources/jlink/options_jlink.txt @@ -1,4 +1,5 @@ - --verbose --version #foo - --module-path "foo bar" --list-plugins -# bar + --verbose --version #--foo + --module-path "\'foo\' \"bar\" --bar" --list-plugins +--output foo --bind-services +# bar \ No newline at end of file diff --git a/src/test/resources/jlink/options_jmod.txt b/src/test/resources/jlink/options_jmod.txt new file mode 100644 index 0000000..81caa7e --- /dev/null +++ b/src/test/resources/jlink/options_jmod.txt @@ -0,0 +1,3 @@ +create +--legal-notices src/test/resources/jlink/dev.mccue.apple/legal +--class-path src/test/resources/jlink/build/jar/dev.mccue.apple.jar \ No newline at end of file