test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Main.java
branchJDK-8200758-branch
changeset 58648 3bf53ffa9ae7
parent 58464 d82489644b15
--- a/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Main.java	Wed Oct 16 09:57:23 2019 -0400
+++ b/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Main.java	Wed Oct 16 10:32:08 2019 -0400
@@ -25,6 +25,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import static jdk.jpackage.test.TestBuilder.CMDLINE_ARG_PREFIX;
@@ -36,9 +37,7 @@
         List<TestInstance> tests = new ArrayList<>();
         try (TestBuilder testBuilder = new TestBuilder(tests::add)) {
             for (var arg : args) {
-                if (TKit.VERBOSE_TEST_SETUP) {
-                    TKit.log(String.format("Parsing [%s]...", arg));
-                }
+                TestBuilder.trace(String.format("Parsing [%s]...", arg));
 
                 if ((CMDLINE_ARG_PREFIX + "list").equals(arg)) {
                     listTests = true;
@@ -62,15 +61,21 @@
         }
 
         // Order tests by their full names to have stable test sequence.
-        tests = tests.stream().sorted((a, b) -> a.fullName().compareTo(
-                b.fullName())).collect(Collectors.toList());
+        List<TestInstance> orderedTests = tests.stream()
+                .sorted((a, b) -> a.fullName().compareTo(b.fullName()))
+                .collect(Collectors.toList());
 
         if (listTests) {
             // Just list the tests
-            tests.stream().forEach(test -> System.out.println(test.fullName()));
+            orderedTests.stream().forEach(test -> System.out.println(String.format(
+                    "%s; workDir=[%s]", test.fullName(), test.workDir())));
             return;
         }
 
+        TKit.withExtraLogStream(() -> runTests(orderedTests));
+    }
+
+    private static void runTests(List<TestInstance> tests) {
         TKit.runTests(tests);
 
         final long passedCount = tests.stream().filter(TestInstance::passed).count();
@@ -78,8 +83,8 @@
         TKit.log(String.format("[  PASSED  ] %d %s", passedCount,
                 passedCount == 1 ? "test" : "tests"));
 
-        reportDetails(tests, "[  SKIPPED ]", TestInstance::skipped);
-        reportDetails(tests, "[  FAILED  ]", TestInstance::failed);
+        reportDetails(tests, "[  SKIPPED ]", TestInstance::skipped, false);
+        reportDetails(tests, "[  FAILED  ]", TestInstance::failed, true);
 
         var withSkipped = reportSummary(tests, "SKIPPED", TestInstance::skipped);
         var withFailures = reportSummary(tests, "FAILED", TestInstance::failed);
@@ -94,13 +99,22 @@
     }
 
     private static long reportDetails(List<TestInstance> tests,
-            String label, Predicate<TestInstance> selector) {
+            String label, Predicate<TestInstance> selector, boolean printWorkDir) {
+
+        final Function<TestInstance, String> makeMessage = test -> {
+            if (printWorkDir) {
+                return String.format("%s %s; workDir=[%s]", label,
+                        test.fullName(), test.workDir());
+            }
+            return String.format("%s %s", label, test.fullName());
+        };
+
         final long count = tests.stream().filter(selector).count();
         if (count != 0) {
             TKit.log(String.format("%s %d %s, listed below", label, count, count
                     == 1 ? "test" : "tests"));
-            tests.stream().filter(selector).forEach(test -> TKit.log(
-                    String.format("%s %s", label, test.fullName())));
+            tests.stream().filter(selector).map(makeMessage).forEachOrdered(
+                    TKit::log);
         }
 
         return count;