]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-116622: Test updates for Android (#117299)
authorMalcolm Smith <smith@chaquo.com>
Fri, 5 Apr 2024 20:57:36 +0000 (21:57 +0100)
committerGitHub <noreply@github.com>
Fri, 5 Apr 2024 20:57:36 +0000 (20:57 +0000)
- re-enable test_fcntl_64_bit on Linux aarch64, but disable it on all
  Android ABIs
- use support.setswitchinterval in all relevant tests
- skip test_fma_zero_result on Android x86_64
- accept EACCES when calling os.get_terminal_size on Android

Lib/test/_test_multiprocessing.py
Lib/test/test_concurrent_futures/test_wait.py
Lib/test/test_fcntl.py
Lib/test/test_gc.py
Lib/test/test_importlib/test_threaded_import.py
Lib/test/test_math.py
Lib/test/test_os.py
Lib/test/test_threading.py

index b63b567bbcad08edc38f837db3366844ce84227f..a74b61013c484880621a81136f3f3011234679f2 100644 (file)
@@ -4662,7 +4662,7 @@ class _TestFinalize(BaseTestCase):
         old_interval = sys.getswitchinterval()
         old_threshold = gc.get_threshold()
         try:
-            sys.setswitchinterval(1e-6)
+            support.setswitchinterval(1e-6)
             gc.set_threshold(5, 5, 5)
             threads = [threading.Thread(target=run_finalizers),
                        threading.Thread(target=make_finalizers)]
index ff486202092c813a00995b66dffd917c4a68b21b..108cf54bf79e6f78bff0ebed851be911fd2de0c8 100644 (file)
@@ -142,7 +142,7 @@ class ThreadPoolWaitTests(ThreadPoolMixin, WaitTests, BaseTestCase):
         def future_func():
             event.wait()
         oldswitchinterval = sys.getswitchinterval()
-        sys.setswitchinterval(1e-6)
+        support.setswitchinterval(1e-6)
         try:
             fs = {self.executor.submit(future_func) for i in range(100)}
             event.set()
index 84c0e5bc4800a1f890c9accfd23948b27daa7b4a..bb784cbe2ce0366bece96f966eb1da9bfc96e143 100644 (file)
@@ -131,9 +131,9 @@ class TestFcntl(unittest.TestCase):
             fcntl.fcntl(BadFile(INT_MIN - 1), fcntl.F_SETFL, os.O_NONBLOCK)
 
     @unittest.skipIf(
-        platform.machine().startswith(("arm", "aarch"))
-        and platform.system() in ("Linux", "Android"),
-        "ARM Linux returns EINVAL for F_NOTIFY DN_MULTISHOT")
+        (platform.machine().startswith("arm") and platform.system() == "Linux")
+        or platform.system() == "Android",
+        "this platform returns EINVAL for F_NOTIFY DN_MULTISHOT")
     def test_fcntl_64_bit(self):
         # Issue #1309352: fcntl shouldn't fail when the third arg fits in a
         # C 'long' but not in a C 'int'.
index 8a748cb55538e8560a61db7edd17794542fb2ea8..71c7fb0edebaa5042b1430a7a8238b7ad5a103b1 100644 (file)
@@ -1,5 +1,6 @@
 import unittest
 import unittest.mock
+from test import support
 from test.support import (verbose, refcount_test,
                           cpython_only, requires_subprocess,
                           requires_gil_enabled)
@@ -470,7 +471,7 @@ class GCTests(unittest.TestCase):
                 make_nested()
 
         old_switchinterval = sys.getswitchinterval()
-        sys.setswitchinterval(1e-5)
+        support.setswitchinterval(1e-5)
         try:
             exit = []
             threads = []
index 5072be86cfd1127613adcfd4cefd8b384d25e5b8..9af1e4d505c66e02435e1b2e300674c42cf5e2ab 100644 (file)
@@ -13,6 +13,7 @@ import time
 import shutil
 import threading
 import unittest
+from test import support
 from test.support import verbose
 from test.support.import_helper import forget, mock_register_at_fork
 from test.support.os_helper import (TESTFN, unlink, rmtree)
@@ -260,7 +261,7 @@ def setUpModule():
     try:
         old_switchinterval = sys.getswitchinterval()
         unittest.addModuleCleanup(sys.setswitchinterval, old_switchinterval)
-        sys.setswitchinterval(1e-5)
+        support.setswitchinterval(1e-5)
     except AttributeError:
         pass
 
index aaa3b16d33fb7dc52ba3adbaacafa1987d174421..0e4dbc0b64a43900b36ac3e5d5babb04a934416c 100644 (file)
@@ -2691,12 +2691,12 @@ class FMATests(unittest.TestCase):
             self.assertEqual(math.fma(-b, -math.inf, c), math.inf)
             self.assertEqual(math.fma(-b, math.inf, c), -math.inf)
 
-    # gh-73468: On WASI and FreeBSD, libc fma() doesn't implement IEE 754-2008
+    # gh-73468: On some platforms, libc fma() doesn't implement IEE 754-2008
     # properly: it doesn't use the right sign when the result is zero.
-    @unittest.skipIf(support.is_wasi,
-                     "WASI fma() doesn't implement IEE 754-2008 properly")
-    @unittest.skipIf(sys.platform.startswith('freebsd'),
-                     "FreeBSD fma() doesn't implement IEE 754-2008 properly")
+    @unittest.skipIf(
+        sys.platform.startswith(("freebsd", "wasi"))
+        or (sys.platform == "android" and platform.machine() == "x86_64"),
+        f"this platform doesn't implement IEE 754-2008 properly")
     def test_fma_zero_result(self):
         nonnegative_finites = [0.0, 1e-300, 2.3, 1e300]
 
index 094ac13a915e2d9d70ba6374c529a354e8668beb..6a34f48f7873eebcdd328ad6b73a0c9a901f170a 100644 (file)
@@ -3934,7 +3934,12 @@ class TermsizeTests(unittest.TestCase):
         try:
             size = os.get_terminal_size()
         except OSError as e:
-            if sys.platform == "win32" or e.errno in (errno.EINVAL, errno.ENOTTY):
+            known_errnos = [errno.EINVAL, errno.ENOTTY]
+            if sys.platform == "android":
+                # The Android testbed redirects the native stdout to a pipe,
+                # which returns a different error code.
+                known_errnos.append(errno.EACCES)
+            if sys.platform == "win32" or e.errno in known_errnos:
                 # Under win32 a generic OSError can be thrown if the
                 # handle cannot be retrieved
                 self.skipTest("failed to query terminal size")
index 84a946477818df1d390935636876734d3935fddd..a7701fa285aee23833dca49eda2700f0a2a8ab48 100644 (file)
@@ -515,7 +515,7 @@ class ThreadTests(BaseTestCase):
         old_interval = sys.getswitchinterval()
         try:
             for i in range(1, 100):
-                sys.setswitchinterval(i * 0.0002)
+                support.setswitchinterval(i * 0.0002)
                 t = threading.Thread(target=lambda: None)
                 t.start()
                 t.join()