diff --git a/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MacHelper.java b/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MacHelper.java index 678d25e4007..0b6245c321f 100644 --- a/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MacHelper.java +++ b/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MacHelper.java @@ -81,12 +81,18 @@ public final class MacHelper { ThrowingConsumer consumer) { cmd.verifyIsOfType(PackageType.MAC_DMG); + // Mount DMG under random temporary folder to avoid collisions when + // mounting DMG with same name asynchroniusly multiple times. + // See JDK-8373105. "hdiutil" does not handle such cases very good. + final var mountRoot = TKit.createTempDirectory("mountRoot"); + // Explode DMG assuming this can require interaction, thus use `yes`. String attachCMD[] = { "sh", "-c", String.join(" ", "yes", "|", "/usr/bin/hdiutil", "attach", - JPackageCommand.escapeAndJoin( - cmd.outputBundle().toString()), "-plist")}; + JPackageCommand.escapeAndJoin(cmd.outputBundle().toString()), + "-mountroot", PathUtils.normalizedAbsolutePathString(mountRoot), + "-nobrowse", "-plist")}; RetryExecutor attachExecutor = new RetryExecutor(); try { // 10 times with 6 second delays.