< prev index next >

test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java

Print this page

        

@@ -28,35 +28,40 @@
 import java.nio.file.Path;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
-
+import java.util.function.Consumer;
 
 public class HelloApp {
-    static void addTo(JPackageCommand cmd) {
-        cmd.addAction(new Runnable() {
-            @Override
-            public void run() {
-                String mainClass = "Hello";
-                Path jar = cmd.inputDir().resolve("hello.jar");
+
+    private static final String MAIN_CLASS = "Hello";
+    private static final String JAR_FILENAME = "hello.jar";
+    private static final Consumer<JPackageCommand> CREATE_JAR_ACTION = (cmd) -> {
                 new JarBuilder()
-                        .setOutputJar(jar.toFile())
-                        .setMainClass(mainClass)
+                .setOutputJar(cmd.inputDir().resolve(JAR_FILENAME).toFile())
+                .setMainClass(MAIN_CLASS)
                         .addSourceFile(Test.TEST_SRC_ROOT.resolve(
-                                Path.of("apps", "image", mainClass + ".java")))
+                        Path.of("apps", "image", MAIN_CLASS + ".java")))
                         .create();
-                cmd.addArguments("--main-jar", jar.getFileName().toString());
-                cmd.addArguments("--main-class", mainClass);
-            }
-        });
+    };
+
+    static void addTo(JPackageCommand cmd) {
+        cmd.addAction(CREATE_JAR_ACTION);
+        cmd.addArguments("--main-jar", JAR_FILENAME);
+        cmd.addArguments("--main-class", MAIN_CLASS);
         if (PackageType.WINDOWS.contains(cmd.packageType())) {
             cmd.addArguments("--win-console");
         }
     }
 
-    public static void verifyOutputFile(Path outputFile, String ... args) {
+    static void verifyOutputFile(Path outputFile, String... args) {
+        if (!outputFile.isAbsolute()) {
+            verifyOutputFile(outputFile.toAbsolutePath().normalize(), args);
+            return;
+        }
+
         Test.assertFileExists(outputFile, true);
 
         List<String> output = null;
         try {
             output = Files.readAllLines(outputFile);

@@ -85,19 +90,45 @@
                 argsEnum.nextElement(), line, String.format(
                 "Check contents of %d text line in [%s] file",
                 counter.incrementAndGet(), outputFile)));
     }
 
+    public static void executeLauncherAndVerifyOutput(JPackageCommand cmd) {
+        final Path launcherPath;
+        if (cmd.packageType() == PackageType.IMAGE) {
+            launcherPath = cmd.appImage().resolve(cmd.launcherPathInAppImage());
+            if (cmd.isFakeRuntimeInAppImage(String.format(
+                    "Not running [%s] launcher from application image",
+                    launcherPath))) {
+                return;
+            }
+        } else {
+            launcherPath = cmd.launcherInstallationPath();
+            if (cmd.isFakeRuntimeInstalled(String.format(
+                    "Not running [%s] launcher", launcherPath))) {
+                return;
+            }
+        }
+
+        executeAndVerifyOutput(launcherPath, cmd.getAllArgumentValues(
+                "--arguments"));
+    }
+
     public static void executeAndVerifyOutput(Path helloAppLauncher,
             String... defaultLauncherArgs) {
         File outputFile = Test.workDir().resolve(OUTPUT_FILENAME).toFile();
+        try {
+            Files.deleteIfExists(outputFile.toPath());
+        } catch (IOException ex) {
+            throw new RuntimeException(ex);
+        }
         new Executor()
                 .setDirectory(outputFile.getParentFile().toPath())
                 .setExecutable(helloAppLauncher.toString())
                 .execute()
                 .assertExitCodeIsZero();
 
         verifyOutputFile(outputFile.toPath(), defaultLauncherArgs);
     }
 
-    public final static String OUTPUT_FILENAME = "appOutput.txt";
+    final static String OUTPUT_FILENAME = "appOutput.txt";
 }
< prev index next >