https://github.com/python/cpython/commit/7c4a8e58188d63f9f83ca888dd33e6973b915351
commit: 7c4a8e58188d63f9f83ca888dd33e6973b915351
branch: 3.14
author: Miss Islington (bot) <[email protected]>
committer: freakboy3742 <[email protected]>
date: 2025-10-29T09:01:39Z
summary:

[3.14] gh-140702: Add test skip for Unix Datagram tests on iOS when on Github 
Actions (GH-140740) (#140742)

Exposes the GITHUB_ACTIONS environment variable to iOS simulator test runs, and
uses this variable to skip a Unix Datagram socketserver test that is unreliable
in the iOS GitHub Actions environment.
(cherry picked from commit 9f8d005d2961777aa533ec330f96b50324a3446f)

Co-authored-by: Russell Keith-Magee <[email protected]>
Co-authored-by: Hugo van Kemenade <[email protected]>

files:
A Misc/NEWS.d/next/Tools-Demos/2025-10-29-15-20-19.gh-issue-140702.ZXtW8h.rst
M Apple/iOS/README.md
M Apple/testbed/TestbedTests/TestbedTests.m
M Apple/testbed/__main__.py
M Lib/test/support/__init__.py
M Lib/test/test_socketserver.py

diff --git a/Apple/iOS/README.md b/Apple/iOS/README.md
index 124a05657aae09..7ee257b5d648f4 100644
--- a/Apple/iOS/README.md
+++ b/Apple/iOS/README.md
@@ -224,6 +224,17 @@ Once you have a built an XCframework, you can test that 
framework by running:
 
   $ python Apple test iOS
 
+This test will attempt to find an "SE-class" simulator (i.e., an iPhone SE, or
+iPhone 16e, or similar), and run the test suite on the most recent version of
+iOS that is available. You can specify a simulator using the `--simulator`
+command line argument, providing the name of the simulator (e.g., `--simulator
+'iPhone 16 Pro'`). You can also use this argument to control the OS version 
used
+for testing; `--simulator 'iPhone 16 Pro,OS=18.2'` would attempt to run the
+tests on an iPhone 16 Pro running iOS 18.2.
+
+If the test runner is executed on GitHub Actions, the `GITHUB_ACTIONS`
+environment variable will be exposed to the iOS process at runtime.
+
 ### Testing a single-architecture framework
 
 The `Apple/testbed` folder that contains an Xcode project that is able to run
diff --git a/Apple/testbed/TestbedTests/TestbedTests.m 
b/Apple/testbed/TestbedTests/TestbedTests.m
index 80741097e4c80d..f7788c47f2c229 100644
--- a/Apple/testbed/TestbedTests/TestbedTests.m
+++ b/Apple/testbed/TestbedTests/TestbedTests.m
@@ -35,6 +35,9 @@ - (void)testPython {
     setenv("NO_COLOR", "1", true);
     setenv("PYTHON_COLORS", "0", true);
 
+    if (getenv("GITHUB_ACTIONS")) {
+        NSLog(@"Running in a GitHub Actions environment");
+    }
     // Arguments to pass into the test suite runner.
     // argv[0] must identify the process; any subsequent arg
     // will be handled as if it were an argument to `python -m test`
diff --git a/Apple/testbed/__main__.py b/Apple/testbed/__main__.py
index f3407ecdf7e734..42eb60a4c8dc02 100644
--- a/Apple/testbed/__main__.py
+++ b/Apple/testbed/__main__.py
@@ -1,5 +1,6 @@
 import argparse
 import json
+import os
 import re
 import shutil
 import subprocess
@@ -78,6 +79,13 @@ def xcode_test(location: Path, platform: str, simulator: 
str, verbose: bool):
         check=True,
     )
 
+    # Any environment variable prefixed with TEST_RUNNER_ is exposed into the
+    # test runner environment. There are some variables (like those identifying
+    # CI platforms) that can be useful to have access to.
+    test_env = os.environ.copy()
+    if "GITHUB_ACTIONS" in os.environ:
+        test_env["TEST_RUNNER_GITHUB_ACTIONS"] = os.environ["GITHUB_ACTIONS"]
+
     print("Running test project...")
     # Test execution *can't* be run -quiet; verbose mode
     # is how we see the output of the test output.
@@ -85,6 +93,7 @@ def xcode_test(location: Path, platform: str, simulator: str, 
verbose: bool):
         ["xcodebuild", "test-without-building"] + args,
         stdout=subprocess.PIPE,
         stderr=subprocess.STDOUT,
+        env=test_env,
     )
     while line := (process.stdout.readline()).decode(*DECODE_ARGS):
         # Strip the timestamp/process prefix from each log line
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index 88f61103512459..da72b0c7dab878 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -68,7 +68,7 @@
     "BrokenIter",
     "in_systemd_nspawn_sync_suppressed",
     "run_no_yield_async_fn", "run_yielding_async_fn", "async_yield",
-    "reset_code",
+    "reset_code", "on_github_actions"
     ]
 
 
@@ -1370,6 +1370,7 @@ def reset_code(f: types.FunctionType) -> 
types.FunctionType:
     f.__code__ = f.__code__.replace()
     return f
 
+on_github_actions = "GITHUB_ACTIONS" in os.environ
 
 #=======================================================================
 # Check for the presence of docstrings.
diff --git a/Lib/test/test_socketserver.py b/Lib/test/test_socketserver.py
index 0f62f9eb200e42..2ca356606b260c 100644
--- a/Lib/test/test_socketserver.py
+++ b/Lib/test/test_socketserver.py
@@ -218,12 +218,16 @@ def test_ForkingUDPServer(self):
                             self.dgram_examine)
 
     @requires_unix_sockets
+    @unittest.skipIf(test.support.is_apple_mobile and 
test.support.on_github_actions,
+                     "gh-140702: Test fails regularly on iOS simulator on 
GitHub Actions")
     def test_UnixDatagramServer(self):
         self.run_server(socketserver.UnixDatagramServer,
                         socketserver.DatagramRequestHandler,
                         self.dgram_examine)
 
     @requires_unix_sockets
+    @unittest.skipIf(test.support.is_apple_mobile and 
test.support.on_github_actions,
+                     "gh-140702: Test fails regularly on iOS simulator on 
GitHub Actions")
     def test_ThreadingUnixDatagramServer(self):
         self.run_server(socketserver.ThreadingUnixDatagramServer,
                         socketserver.DatagramRequestHandler,
diff --git 
a/Misc/NEWS.d/next/Tools-Demos/2025-10-29-15-20-19.gh-issue-140702.ZXtW8h.rst 
b/Misc/NEWS.d/next/Tools-Demos/2025-10-29-15-20-19.gh-issue-140702.ZXtW8h.rst
new file mode 100644
index 00000000000000..9efbf0162dd1c1
--- /dev/null
+++ 
b/Misc/NEWS.d/next/Tools-Demos/2025-10-29-15-20-19.gh-issue-140702.ZXtW8h.rst
@@ -0,0 +1,2 @@
+The iOS testbed app will now expose the ``GITHUB_ACTIONS`` environment
+variable to iOS apps being tested.

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to