|
27 | 27 | import java.nio.file.Path;
|
28 | 28 | import java.util.List;
|
29 | 29 | import java.util.ArrayList;
|
| 30 | +import java.util.Collection; |
| 31 | +import java.util.Collections; |
30 | 32 | import java.util.Optional;
|
31 | 33 | import java.util.function.Function;
|
32 | 34 | import java.util.function.Predicate;
|
|
41 | 43 | import jdk.jpackage.test.JavaTool;
|
42 | 44 | import jdk.jpackage.test.Annotations.Test;
|
43 | 45 | import jdk.jpackage.test.Annotations.Parameter;
|
| 46 | +import jdk.jpackage.test.Annotations.ParameterSupplier; |
44 | 47 | import jdk.jpackage.internal.util.function.ThrowingConsumer;
|
| 48 | +import jdk.tools.jlink.internal.LinkableRuntimeImage; |
45 | 49 | import static jdk.jpackage.test.RunnablePackageTest.Action.CREATE_AND_UNPACK;
|
46 | 50 |
|
47 | 51 | /*
|
|
55 | 59 | */
|
56 | 60 |
|
57 | 61 | public final class BasicTest {
|
| 62 | + |
| 63 | + public static Collection addModulesParams() { |
| 64 | + List<Object[][]> params = new ArrayList<>(); |
| 65 | + params.add(new Object[][] { new String[] { "--add-modules", "ALL-DEFAULT" } }); |
| 66 | + params.add(new Object[][] { new String[] { "--add-modules", "java.desktop" } }); |
| 67 | + params.add(new Object[][] { new String[] { "--add-modules", "java.desktop,jdk.jartool" } }); |
| 68 | + params.add(new Object[][] { new String[] { "--add-modules", "java.desktop", "--add-modules", "jdk.jartool" } }); |
| 69 | + if (isAllModulePathCapable()) { |
| 70 | + final Path jmods = Path.of(System.getProperty("java.home"), "jmods"); |
| 71 | + params.add(new Object[][] { new String[] { "--add-modules", "ALL-MODULE-PATH", |
| 72 | + // Since JDK-8345259 ALL-MODULE-PATH requires --module-path arg |
| 73 | + "--module-path", jmods.toString() } }); |
| 74 | + } |
| 75 | + return Collections.unmodifiableList(params); |
| 76 | + } |
| 77 | + |
| 78 | + private static boolean isAllModulePathCapable() { |
| 79 | + Path jmods = Path.of(System.getProperty("java.home"), "jmods"); |
| 80 | + boolean noJmods = Files.notExists(jmods); |
| 81 | + if (LinkableRuntimeImage.isLinkableRuntime() && noJmods) { |
| 82 | + TKit.trace("ALL-MODULE-PATH test skipped for linkable run-time image"); |
| 83 | + return false; |
| 84 | + } |
| 85 | + return true; |
| 86 | + } |
| 87 | + |
58 | 88 | @Test
|
59 | 89 | public void testNoArgs() {
|
60 | 90 | List<String> output =
|
@@ -306,17 +336,12 @@ public void testNoOutputDir(boolean appImage) throws Throwable {
|
306 | 336 | }
|
307 | 337 |
|
308 | 338 | @Test
|
309 |
| - @Parameter("ALL-MODULE-PATH") |
310 |
| - @Parameter("ALL-DEFAULT") |
311 |
| - @Parameter("java.desktop") |
312 |
| - @Parameter("java.desktop,jdk.jartool") |
313 |
| - @Parameter({ "java.desktop", "jdk.jartool" }) |
314 |
| - public void testAddModules(String... addModulesArg) { |
| 339 | + @ParameterSupplier("addModulesParams") |
| 340 | + public void testAddModules(String[] addModulesArg) { |
315 | 341 | JPackageCommand cmd = JPackageCommand
|
316 | 342 | .helloAppImage("goodbye.jar:com.other/com.other.Hello")
|
317 | 343 | .ignoreDefaultRuntime(true); // because of --add-modules
|
318 |
| - Stream.of(addModulesArg).map(v -> Stream.of("--add-modules", v)).flatMap( |
319 |
| - s -> s).forEachOrdered(cmd::addArgument); |
| 344 | + Stream.of(addModulesArg).forEachOrdered(cmd::addArgument); |
320 | 345 | cmd.executeAndAssertHelloAppImageCreated();
|
321 | 346 | }
|
322 | 347 |
|
|
0 commit comments