From 5004ea9c7936811afd0a0d0b37faa6cab4ad1c08 Mon Sep 17 00:00:00 2001 From: Chris Busillo Date: Wed, 12 Aug 2026 10:34:52 -0400 Subject: [PATCH 1/2] Test TestFlight platform parsing behavior --- .../test_distribute_testflight_beta.py | 35 +++++++++++++++++++ Tests/ScriptsTests/test_release_workflows.py | 1 - 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/Tests/ScriptsTests/test_distribute_testflight_beta.py b/Tests/ScriptsTests/test_distribute_testflight_beta.py index fc00e53..d86881e 100644 --- a/Tests/ScriptsTests/test_distribute_testflight_beta.py +++ b/Tests/ScriptsTests/test_distribute_testflight_beta.py @@ -371,6 +371,41 @@ def test_parse_args_requires_platform(self): with self.assertRaises(SystemExit): distribute_testflight_beta.parse_args() + def test_parse_args_accepts_each_supported_platform(self): + for platform in ("IOS", "MAC_OS", "TV_OS", "VISION_OS"): + with self.subTest(platform=platform), mock.patch( + "sys.argv", + [ + "distribute-testflight-beta.py", + "--version", + "1.0.22", + "--build-number", + "202606111944", + "--platform", + platform, + ], + ): + arguments = distribute_testflight_beta.parse_args() + + self.assertEqual(arguments.platform, platform) + + def test_parse_args_rejects_unsupported_platform(self): + with mock.patch( + "sys.argv", + [ + "distribute-testflight-beta.py", + "--version", + "1.0.22", + "--build-number", + "202606111944", + "--platform", + "ANDROID", + ], + ): + with mock.patch("sys.stderr", new_callable=io.StringIO): + with self.assertRaises(SystemExit): + distribute_testflight_beta.parse_args() + def test_request_retries_transient_http_failures(self): client = distribute_testflight_beta.ASCClient("token") diff --git a/Tests/ScriptsTests/test_release_workflows.py b/Tests/ScriptsTests/test_release_workflows.py index baa0727..8463274 100644 --- a/Tests/ScriptsTests/test_release_workflows.py +++ b/Tests/ScriptsTests/test_release_workflows.py @@ -901,7 +901,6 @@ def test_testflight_beta_distribution_workflow_uses_distribution_script(self): self.assertIn("- TV_OS", workflow) self.assertIn("/betaGroups/{group_id}/relationships/builds", script) self.assertIn("processingState", script) - self.assertIn('required=True,\n choices=("IOS", "MAC_OS", "TV_OS", "VISION_OS")', script) def test_app_store_screenshot_upload_workflow_uses_safe_defaults(self): workflow = self.read(".github/workflows/upload-app-store-screenshots.yml") From 5b576b5ec023b9968520396011bfeb19e5f1dddf Mon Sep 17 00:00:00 2001 From: Chris Busillo Date: Wed, 12 Aug 2026 10:37:52 -0400 Subject: [PATCH 2/2] Tighten TestFlight parser failure assertions --- .../test_distribute_testflight_beta.py | 45 +++++++++++-------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/Tests/ScriptsTests/test_distribute_testflight_beta.py b/Tests/ScriptsTests/test_distribute_testflight_beta.py index d86881e..c0371fd 100644 --- a/Tests/ScriptsTests/test_distribute_testflight_beta.py +++ b/Tests/ScriptsTests/test_distribute_testflight_beta.py @@ -367,27 +367,31 @@ def test_parse_args_requires_platform(self): "202606111944", ], ): - with mock.patch("sys.stderr", new_callable=io.StringIO): - with self.assertRaises(SystemExit): + with mock.patch("sys.stderr", new_callable=io.StringIO) as error_output: + with self.assertRaises(SystemExit) as context: distribute_testflight_beta.parse_args() + self.assertEqual(context.exception.code, 2) + self.assertIn("the following arguments are required: --platform", error_output.getvalue()) + def test_parse_args_accepts_each_supported_platform(self): for platform in ("IOS", "MAC_OS", "TV_OS", "VISION_OS"): - with self.subTest(platform=platform), mock.patch( - "sys.argv", - [ - "distribute-testflight-beta.py", - "--version", - "1.0.22", - "--build-number", - "202606111944", - "--platform", - platform, - ], - ): - arguments = distribute_testflight_beta.parse_args() - - self.assertEqual(arguments.platform, platform) + with self.subTest(platform=platform): + with mock.patch( + "sys.argv", + [ + "distribute-testflight-beta.py", + "--version", + "1.0.22", + "--build-number", + "202606111944", + "--platform", + platform, + ], + ): + arguments = distribute_testflight_beta.parse_args() + + self.assertEqual(arguments.platform, platform) def test_parse_args_rejects_unsupported_platform(self): with mock.patch( @@ -402,10 +406,13 @@ def test_parse_args_rejects_unsupported_platform(self): "ANDROID", ], ): - with mock.patch("sys.stderr", new_callable=io.StringIO): - with self.assertRaises(SystemExit): + with mock.patch("sys.stderr", new_callable=io.StringIO) as error_output: + with self.assertRaises(SystemExit) as context: distribute_testflight_beta.parse_args() + self.assertEqual(context.exception.code, 2) + self.assertIn("invalid choice: 'ANDROID'", error_output.getvalue()) + def test_request_retries_transient_http_failures(self): client = distribute_testflight_beta.ASCClient("token")