--- old/test/jdk/tools/launcher/JliLaunchTest.java 2020-02-03 14:25:48.000000000 -0800 +++ new/test/jdk/tools/launcher/JliLaunchTest.java 2020-02-03 14:25:48.000000000 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,7 @@ /** * @test - * @bug 8213362 + * @bug 8213362 8238225 * @comment Test JLI_Launch for tools distributed outside JDK * @library /test/lib * @run main/native JliLaunchTest @@ -56,6 +56,27 @@ OutputAnalyzer outputf = new OutputAnalyzer(pb.start()); outputf.shouldHaveExitValue(0); + + if (Platform.isOSX()) { + Path javaHome = Paths.get(Utils.TEST_JDK); + if (javaHome.getFileName().toString().equals("Home")) { + // To exercise this test path you need to make sure the JDK under test is + // the MacOS bundle and not the simple jdk image. This can currently be + // achieved by running something like this: + // $ make test-only TEST=open/test/jdk/tools/launcher/JliLaunchTest.java \ + // JDK_IMAGE_DIR=$PWD/build/macosx-x64/images/jdk-bundle/jdk-15.jdk/Contents/Home + System.out.println("MacOS bundle distribution detected, also testing Contents/MacOS/libjli.dylib"); + String macosDir = javaHome.getParent().resolve("MacOS").toString(); + ProcessBuilder pb2 = new ProcessBuilder(launcher.toString(), "--version"); + env = pb2.environment(); + env.compute(pathEnvVar, (k, v) -> (v == null) ? macosDir : macosDir + File.pathSeparator + v); + + OutputAnalyzer output2 = new OutputAnalyzer(pb2.start()); + output2.shouldHaveExitValue(0); + } else { + System.out.println("Not a MacOS bundle distribution, not testing Contents/MacOS/libjli.dylib"); + } + } } }