RFR: 8351095: [macos] Add more jpackage tests for --mac-app-store option
Alexey Semenyuk
asemenyuk at openjdk.org
Tue Nov 25 19:45:30 UTC 2025
On Tue, 25 Nov 2025 19:00:33 GMT, Alexander Matveev <almatvee at openjdk.org> wrote:
>> test/jdk/tools/jpackage/share/ServiceTest.java line 229:
>>
>>> 227: appImageCmd.cmd().orElseThrow().addArgument("--mac-app-store");
>>> 228: }
>>> 229:
>>
>> Why do we need this option for an app image?
>
> Without it jpackage will add launchers as a service even if `--mac-app-store` is specified for PKG. I do not think it is a bug. jpackage takes `--mac-app-store` value from predefined app image. Specifying it when generating PKG at line 265 is not needed and was added to make `cmd.hasArgument("--mac-app-store")` work. Maybe we need another approach and add isMacAppStore() function somewhere which will check predefined app image or `cmd.hasArgument("--mac-app-store")` to figure out if we generating for Mac App Store.
Ah, right. We store the value of the `--mac-app-store` option in the app image file. Then `LauncherAsServiceVerifier.launcherAsService()` should be as follows:
diff --git a/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LauncherAsServiceVerifier.java b/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LauncherAsServiceVerifier.java
index 0be6cf685f6..a0c7164f5a4 100644
--- a/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LauncherAsServiceVerifier.java
+++ b/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LauncherAsServiceVerifier.java
@@ -239,7 +239,9 @@ private static Map<Boolean, List<String>> partitionLaunchers(JPackageCommand cmd
}
static boolean launcherAsService(JPackageCommand cmd, String launcherName) {
- if (cmd.isMainLauncher(launcherName)) {
+ if (MacHelper.isForAppStore(cmd)) {
+ return false;
+ } else if (cmd.isMainLauncher(launcherName)) {
return PropertyFinder.findLauncherProperty(cmd, null,
PropertyFinder.cmdlineBooleanOption("--launcher-as-service"),
PropertyFinder.nop(),
This will eliminate the need for cmd.hasArgument("--mac-app-store") in the PKG bundling command line.
> Maybe we need another approach and add isMacAppStore() function somewhere which will check predefined app image or cmd.hasArgument("--mac-app-store") to figure out if we generating for Mac App Store.
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 a6d24af2b25..f7b124db1db 100644
--- a/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MacHelper.java
+++ b/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MacHelper.java
@@ -797,6 +797,15 @@ private static String getPackageId(JPackageCommand cmd) {
).orElseGet(cmd::name);
}
+ static boolean isForAppStore(JPackageCommand cmd) {
+ return PropertyFinder.findAppProperty(cmd,
+ PropertyFinder.cmdlineBooleanOption("--mac-app-image"),
+ PropertyFinder.appImageFile(appImageFile -> {
+ return Boolean.toString(appImageFile.macAppStore());
+ })
+ ).map(Boolean::parseBoolean).orElse(false);
+ }
+
public static boolean isXcodeDevToolsInstalled() {
return Inner.XCODE_DEV_TOOLS_INSTALLED;
}
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/28487#discussion_r2561194108
More information about the core-libs-dev
mailing list