From f4ddafcd7073994e9b6672df79128c9474b45dcd Mon Sep 17 00:00:00 2001 From: Alexander Matveev Date: Wed, 14 Jan 2026 23:35:49 +0000 Subject: [PATCH] 8373105: Test tools/jpackage/share/AsyncTest.java failed: problem running hdiutil Reviewed-by: asemenyuk Backport-of: 2d0928406027a848cf2d2d0574024970b8fb535c --- .../jpackage/helpers/jdk/jpackage/test/MacHelper.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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 caeb0a206fc..ed5f1b75817 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.