[Python-checkins] gh-92820: Skip test_cppext if _ctypes is missing (#92844)
vstinner
webhook-mailer at python.org
Mon May 16 07:54:51 EDT 2022
https://github.com/python/cpython/commit/ca0cc9c433830e14714a5cc93fb4e7254da3dd76
commit: ca0cc9c433830e14714a5cc93fb4e7254da3dd76
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2022-05-16T13:54:45+02:00
summary:
gh-92820: Skip test_cppext if _ctypes is missing (#92844)
Add @test.support.requires_venv_with_pip decorator.
files:
M Lib/test/support/__init__.py
M Lib/test/test_cppext.py
M Lib/test/test_venv.py
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index 41502cf4e97be..bddfe118e369d 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -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')
diff --git a/Lib/test/test_cppext.py b/Lib/test/test_cppext.py
index 8acf0f1b7c0dc..9ed90616b0eab 100644
--- a/Lib/test/test_cppext.py
+++ b/Lib/test/test_cppext.py
@@ -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():
diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py
index d96cf1e6c7493..4f897523907ef 100644
--- a/Lib/test/test_venv.py
+++ b/Lib/test/test_venv.py
@@ -16,7 +16,8 @@
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 @@ def do_test_with_pip(self, system_site_packages):
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)
More information about the Python-checkins
mailing list