]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-92820: Skip test_cppext if _ctypes is missing (#92844)
authorVictor Stinner <vstinner@python.org>
Mon, 16 May 2022 11:54:45 +0000 (13:54 +0200)
committerGitHub <noreply@github.com>
Mon, 16 May 2022 11:54:45 +0000 (13:54 +0200)
Add @test.support.requires_venv_with_pip decorator.

Lib/test/support/__init__.py
Lib/test/test_cppext.py
Lib/test/test_venv.py

index 41502cf4e97be8caae81a140f1fa857b7a3ad8da..bddfe118e369d0a3bb6ee6d15f46ddb1b5d0d24a 100644 (file)
@@ -2183,3 +2183,20 @@ def clear_ignored_deprecations(*tokens: object) -> None:
     if warnings.filters != new_filters:
         warnings.filters[:] = new_filters
         warnings._filters_mutated()
+
+
+# Skip a test if venv with pip is known to not work.
+def requires_venv_with_pip():
+    # ensurepip requires zlib to open ZIP archives (.whl binary wheel packages)
+    try:
+        import zlib
+    except ImportError:
+        return unittest.skipIf(True, "venv: ensurepip requires zlib")
+
+    # bpo-26610: pip/pep425tags.py requires ctypes.
+    # gh-92820: setuptools/windows_support.py uses ctypes (setuptools 58.1).
+    try:
+        import ctypes
+    except ImportError:
+        ctypes = None
+    return unittest.skipUnless(ctypes, 'venv: pip requires ctypes')
index 8acf0f1b7c0dc3ea55e1f9c835f416d231edb433..9ed90616b0eab5ba12d3034575c07136ebb49883 100644 (file)
@@ -19,6 +19,8 @@ class TestCPPExt(unittest.TestCase):
     # With MSVC, the linker fails with: cannot open file 'python311.lib'
     # https://github.com/python/cpython/pull/32175#issuecomment-1111175897
     @unittest.skipIf(MS_WINDOWS, 'test fails on Windows')
+    # the test uses venv+pip: skip if it's not available
+    @support.requires_venv_with_pip()
     def test_build(self):
         # Build in a temporary directory
         with os_helper.temp_cwd():
index d96cf1e6c749308f3ff5357730ffea85d014c189..4f897523907ef4896bb1386f7ef87749a3a77c7c 100644 (file)
@@ -16,7 +16,8 @@ import sys
 import tempfile
 from test.support import (captured_stdout, captured_stderr, requires_zlib,
                           skip_if_broken_multiprocessing_synchronize, verbose,
-                          requires_subprocess, is_emscripten)
+                          requires_subprocess, is_emscripten,
+                          requires_venv_with_pip)
 from test.support.os_helper import (can_symlink, EnvironmentVarGuard, rmtree)
 import unittest
 import venv
@@ -605,9 +606,7 @@ class EnsurePipTest(BaseTest):
         if not system_site_packages:
             self.assert_pip_not_installed()
 
-    # Issue #26610: pip/pep425tags.py requires ctypes
-    @unittest.skipUnless(ctypes, 'pip requires ctypes')
-    @requires_zlib()
+    @requires_venv_with_pip()
     def test_with_pip(self):
         self.do_test_with_pip(False)
         self.do_test_with_pip(True)