< prev index next >

test/jdk/tools/jpackage/share/AdditionalLaunchersTest.java

Print this page

        

*** 25,40 **** import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.Optional; import java.lang.invoke.MethodHandles; ! import jdk.jpackage.test.HelloApp; ! import jdk.jpackage.test.PackageTest; ! import jdk.jpackage.test.PackageType; ! import jdk.jpackage.test.FileAssociations; ! import jdk.jpackage.test.Annotations.Test; ! import jdk.jpackage.test.TKit; /** * Test --add-launcher parameter. Output of the test should be * additionallauncherstest*.* installer. The output installer should provide the * same functionality as the default installer (see description of the default --- 25,36 ---- import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.Optional; import java.lang.invoke.MethodHandles; ! import jdk.jpackage.test.*; ! import jdk.jpackage.test.Annotations.*; /** * Test --add-launcher parameter. Output of the test should be * additionallauncherstest*.* installer. The output installer should provide the * same functionality as the default installer (see description of the default
*** 44,58 **** --- 40,68 ---- /* * @test * @summary jpackage with --add-launcher * @key jpackagePlatformPackage + * @requires (jpackage.test.SQETest != null) * @library ../helpers * @build jdk.jpackage.test.* * @modules jdk.incubator.jpackage/jdk.incubator.jpackage.internal * @compile AdditionalLaunchersTest.java * @run main/othervm/timeout=360 -Xmx512m jdk.jpackage.test.Main + * --jpt-run=AdditionalLaunchersTest.test + */ + + /* + * @test + * @summary jpackage with --add-launcher + * @key jpackagePlatformPackage + * @requires (jpackage.test.SQETest == null) + * @library ../helpers + * @build jdk.jpackage.test.* + * @modules jdk.jpackage/jdk.jpackage.internal + * @compile AdditionalLaunchersTest.java + * @run main/othervm/timeout=540 -Xmx512m jdk.jpackage.test.Main * --jpt-run=AdditionalLaunchersTest */ public class AdditionalLaunchersTest {
*** 70,158 **** new FileAssociations( MethodHandles.lookup().lookupClass().getSimpleName()).applyTo( packageTest); ! new AdditionalLauncher("Baz2").setArguments().applyTo(packageTest); ! new AdditionalLauncher("foo").setArguments("yep!").applyTo(packageTest); ! ! AdditionalLauncher barLauncher = new AdditionalLauncher("Bar").setArguments( ! "one", "two", "three"); ! if (TKit.isLinux()) { ! barLauncher.setIcon(TKit.TEST_SRC_ROOT.resolve("apps/dukeplug.png")); ! } ! barLauncher.applyTo(packageTest); packageTest.run(); } ! private static Path replaceFileName(Path path, String newFileName) { ! String fname = path.getFileName().toString(); ! int lastDotIndex = fname.lastIndexOf("."); ! if (lastDotIndex != -1) { ! fname = newFileName + fname.substring(lastDotIndex); ! } else { ! fname = newFileName; ! } ! return path.getParent().resolve(fname); ! } ! static class AdditionalLauncher { ! AdditionalLauncher(String name) { ! this.name = name; ! } ! AdditionalLauncher setArguments(String... args) { ! arguments = List.of(args); ! return this; ! } ! AdditionalLauncher setIcon(Path iconPath) { ! icon = iconPath; ! return this; } ! void applyTo(PackageTest test) { ! final Path propsFile = TKit.workDir().resolve(name + ".properties"); ! test.addInitializer(cmd -> { ! cmd.addArguments("--add-launcher", String.format("%s=%s", name, ! propsFile)); ! ! Map<String, String> properties = new HashMap<>(); ! if (arguments != null) { ! properties.put("arguments", String.join(" ", ! arguments.toArray(String[]::new))); ! } ! if (icon != null) { ! properties.put("icon", icon.toAbsolutePath().toString()); } ! TKit.createPropertiesFile(propsFile, properties); ! }); ! test.addInstallVerifier(cmd -> { ! Path launcherPath = replaceFileName(cmd.appLauncherPath(), name); ! ! TKit.assertExecutableFileExists(launcherPath); ! if (cmd.isFakeRuntime(String.format( ! "Not running %s launcher", launcherPath))) { ! return; ! } ! HelloApp.executeAndVerifyOutput(launcherPath, ! Optional.ofNullable(arguments).orElse(List.of()).toArray( ! String[]::new)); ! }); ! test.addUninstallVerifier(cmd -> { ! Path launcherPath = replaceFileName(cmd.appLauncherPath(), name); ! TKit.assertPathExists(launcherPath, false); ! }); } ! private List<String> arguments; ! private Path icon; ! private final String name; ! } } --- 80,203 ---- new FileAssociations( MethodHandles.lookup().lookupClass().getSimpleName()).applyTo( packageTest); ! new AdditionalLauncher("Baz2") ! .setDefaultArguments() ! .applyTo(packageTest); ! ! new AdditionalLauncher("foo") ! .setDefaultArguments("yep!") ! .applyTo(packageTest); ! ! new AdditionalLauncher("Bar") ! .setDefaultArguments("one", "two", "three") ! .setIcon(GOLDEN_ICON) ! .applyTo(packageTest); packageTest.run(); } ! @Test ! public void bug8230933() { ! PackageTest packageTest = new PackageTest().configureHelloApp(); ! new AdditionalLauncher("default_icon") ! .applyTo(packageTest); ! new AdditionalLauncher("no_icon") ! .setNoIcon().applyTo(packageTest); ! new AdditionalLauncher("custom_icon") ! .setIcon(GOLDEN_ICON) ! .applyTo(packageTest); ! packageTest.run(); } ! @Test ! // Regular app ! @Parameter("Hello") ! // Modular app ! @Parameter("com.other/com.other.CiaoBella") ! public void testJavaOptions(String javaAppDesc) { ! JPackageCommand cmd = JPackageCommand.helloAppImage(javaAppDesc) ! .addArguments("--arguments", "courageous") ! .addArguments("--java-options", "-Dparam1=xxx") ! .addArguments("--java-options", "-Dparam2=yyy") ! .addArguments("--java-options", "-Dparam3=zzz"); ! ! new AdditionalLauncher("Jack") ! .addDefaultArguments("Jack of All Trades", "Master of None") ! .setJavaOptions("-Dparam1=Contractor") ! .applyTo(cmd); ! ! new AdditionalLauncher("Monday") ! .addDefaultArguments("Knock Your", "Socks Off") ! .setJavaOptions("-Dparam2=Surprise workers!") ! .applyTo(cmd); ! // Should inherit default arguments and java options from the main launcher ! new AdditionalLauncher("void").applyTo(cmd); ! cmd.executeAndAssertHelloAppImageCreated(); } ! /** ! * Test usage of modular and non modular apps in additional launchers. ! */ ! @Test ! @Parameter("true") ! @Parameter("fase") ! public void testMainLauncherIsModular(boolean mainLauncherIsModular) { ! final var nonModularAppDesc = JavaAppDesc.parse("a.b.c.Hello"); ! final var modularAppDesc = JavaAppDesc.parse( ! "module.jar:com.that/com.that.main.Florence"); ! ! final var nonModularJarCmd = JPackageCommand.helloAppImage(nonModularAppDesc); ! final var modularJarCmd = JPackageCommand.helloAppImage(modularAppDesc); ! ! final JPackageCommand cmd; ! if (mainLauncherIsModular) { ! // Create non modular jar. ! nonModularJarCmd.executePrerequisiteActions(); ! ! cmd = modularJarCmd; ! cmd.addArguments("--description", ! "Test modular app with multiple add-launchers where one is modular app and other is non modular app"); ! cmd.addArguments("--input", nonModularJarCmd.getArgumentValue( ! "--input")); ! } else { ! // Create modular jar. ! modularJarCmd.executePrerequisiteActions(); ! cmd = nonModularJarCmd; ! cmd.addArguments("--description", ! "Test non modular app with multiple add-launchers where one is modular app and other is non modular app"); ! cmd.addArguments("--module-path", modularJarCmd.getArgumentValue( ! "--module-path")); ! cmd.addArguments("--add-modules", modularAppDesc.moduleName()); ! } ! ! new AdditionalLauncher("ModularAppLauncher") ! .addRawProperties(Map.entry("module", JavaAppDesc.parse( ! modularAppDesc.toString()).setJarFileName(null).toString())) ! .addRawProperties(Map.entry("main-jar", "")) ! .applyTo(cmd); ! ! new AdditionalLauncher("NonModularAppLauncher") ! // Use space ( ) character instead of equality sign (=) as ! // a key/value separator ! .setPersistenceHandler((path, properties) -> TKit.createTextFile(path, ! properties.stream().map(entry -> String.join(" ", entry.getKey(), ! entry.getValue())))) ! .addRawProperties(Map.entry("main-class", nonModularAppDesc.className())) ! .addRawProperties(Map.entry("main-jar", nonModularAppDesc.jarFileName())) ! .applyTo(cmd); ! cmd.executeAndAssertHelloAppImageCreated(); } ! private final static Path GOLDEN_ICON = TKit.TEST_SRC_ROOT.resolve(Path.of( ! "resources", "icon" + TKit.ICON_SUFFIX)); }
< prev index next >