gowalk-cicd 1.0.157 → 1.0.158
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/action/.daemux-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.158
|
|
@@ -67,6 +67,14 @@ UNIVERSAL_IDIOMS = frozenset({"universal"})
|
|
|
67
67
|
#: runtime documentation nests it under NSExtensionAttributes and the delivery
|
|
68
68
|
#: validator reads it directly under NSExtension, so a bundle that satisfies only
|
|
69
69
|
#: the documented location is delivered and then refused as "not specified".
|
|
70
|
+
#: A `forbidden` row names a key the validator refuses to SEE. A WidgetKit
|
|
71
|
+
#: extension has no principal class: it enters through its @main WidgetBundle,
|
|
72
|
+
#: Xcode's own template ships NSExtensionPointIdentifier alone, and a bundle
|
|
73
|
+
#: that adds NSExtensionPrincipalClass is delivered and then refused with
|
|
74
|
+
#: "Validation failed (409) Unexpected Info.plist key. Unexpected key
|
|
75
|
+
#: NSExtensionPrincipalClass found in extension Info.plist for
|
|
76
|
+
#: Payload/<App>.app/PlugIns/<Widget>.appex". Demanding the key here refused
|
|
77
|
+
#: every correct WidgetKit build (Sunnah 1.0.1 (16)) for a binary Apple accepts.
|
|
70
78
|
EXTENSION_KEYS = {
|
|
71
79
|
"com.apple.broadcast-services-upload": (
|
|
72
80
|
{"key": "RPBroadcastProcessMode", "path": (),
|
|
@@ -77,7 +85,9 @@ EXTENSION_KEYS = {
|
|
|
77
85
|
{"key": "NSExtensionPrincipalClass", "path": (), "values": (), "itms": "ITMS-90362"},
|
|
78
86
|
),
|
|
79
87
|
"com.apple.widgetkit-extension": (
|
|
80
|
-
{"key": "NSExtensionPrincipalClass", "path": (), "
|
|
88
|
+
{"key": "NSExtensionPrincipalClass", "path": (), "forbidden": True,
|
|
89
|
+
"reason": "a WidgetKit extension enters through its @main WidgetBundle",
|
|
90
|
+
"itms": "Unexpected Info.plist key"},
|
|
81
91
|
),
|
|
82
92
|
}
|
|
83
93
|
|
|
@@ -335,10 +345,21 @@ def check_extension_keys(ctx: dict) -> list[dict]:
|
|
|
335
345
|
for step in rule["path"]:
|
|
336
346
|
node = node.get(step) if isinstance(node, dict) else None
|
|
337
347
|
value = node.get(rule["key"]) if isinstance(node, dict) else None
|
|
348
|
+
where = "NSExtension" + "".join("." + step for step in rule["path"])
|
|
349
|
+
if rule.get("forbidden"):
|
|
350
|
+
if value is None:
|
|
351
|
+
continue
|
|
352
|
+
failures.append({
|
|
353
|
+
"itms": rule["itms"],
|
|
354
|
+
"message": (f"{name}: {where}.{rule['key']} is present; Apple's delivery "
|
|
355
|
+
f"validator refuses it for {point} as an unexpected Info.plist key."),
|
|
356
|
+
"next": (f"Remove {where}.{rule['key']} from the extension's Info.plist; "
|
|
357
|
+
f"{rule['reason']}."),
|
|
358
|
+
})
|
|
359
|
+
continue
|
|
338
360
|
legal = rule["values"]
|
|
339
361
|
if value is not None and (not legal or value in legal):
|
|
340
362
|
continue
|
|
341
|
-
where = "NSExtension" + "".join("." + step for step in rule["path"])
|
|
342
363
|
elsewhere = ""
|
|
343
364
|
attributes = extension.get("NSExtensionAttributes")
|
|
344
365
|
if isinstance(attributes, dict) and rule["key"] in attributes and not rule["path"]:
|
|
@@ -200,6 +200,27 @@ class BundleTests(unittest.TestCase):
|
|
|
200
200
|
self.assertEqual(self.codes(answer), ["ITMS-90362"])
|
|
201
201
|
self.assertIn("not an accepted value", answer["failures"][0]["message"])
|
|
202
202
|
|
|
203
|
+
def test_a_widgetkit_extension_with_only_its_point_identifier_passes(self):
|
|
204
|
+
self.write_info()
|
|
205
|
+
self.extension("SunnahWidget.appex", {
|
|
206
|
+
"NSExtensionPointIdentifier": "com.apple.widgetkit-extension",
|
|
207
|
+
})
|
|
208
|
+
answer = preflight.inspect(self.app, only={"extension_keys"})
|
|
209
|
+
self.assertTrue(answer["ok"], answer["failures"])
|
|
210
|
+
|
|
211
|
+
def test_a_widgetkit_principal_class_is_refused_and_explained(self):
|
|
212
|
+
self.write_info()
|
|
213
|
+
self.extension("SunnahWidget.appex", {
|
|
214
|
+
"NSExtensionPointIdentifier": "com.apple.widgetkit-extension",
|
|
215
|
+
"NSExtensionPrincipalClass": "$(PRODUCT_MODULE_NAME).SunnahWidgetBundle",
|
|
216
|
+
})
|
|
217
|
+
answer = preflight.inspect(self.app, only={"extension_keys"})
|
|
218
|
+
self.assertEqual(self.codes(answer), ["Unexpected Info.plist key"])
|
|
219
|
+
failure = answer["failures"][0]
|
|
220
|
+
self.assertIn("NSExtension.NSExtensionPrincipalClass is present", failure["message"])
|
|
221
|
+
self.assertIn("Remove NSExtension.NSExtensionPrincipalClass", failure["next"])
|
|
222
|
+
self.assertIn("@main WidgetBundle", failure["next"])
|
|
223
|
+
|
|
203
224
|
def test_an_unknown_extension_point_is_left_alone(self):
|
|
204
225
|
self.write_info()
|
|
205
226
|
self.extension("Other.appex", {"NSExtensionPointIdentifier": "com.example.unknown"})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.158
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.158
|