|
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