summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2022-06-22 12:46:01 (GMT)
committerGitHub <noreply@github.com>2022-06-22 12:46:01 (GMT)
commit798ace50f9d5b7d12bf3328efeebc355cbba2c7e (patch)
tree694759820740151a658d2fadb07f9d4b935f05bb
parent525ab8f310b5090e7587c5070c9e675a6e01318c (diff)
downloadcpython-798ace50f9d5b7d12bf3328efeebc355cbba2c7e.zip
cpython-798ace50f9d5b7d12bf3328efeebc355cbba2c7e.tar.gz
cpython-798ace50f9d5b7d12bf3328efeebc355cbba2c7e.tar.bz2
gh-93951: In test_bdb.StateTestCase.test_skip, avoid including auxiliary importers. (GH-93962) (GH-94119)
Co-authored-by: Brett Cannon <brett@python.org> (cherry picked from commit c029b552f39200977325d4351803bdd13ddccc4f) Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
-rw-r--r--Lib/test/support/__init__.py10
-rw-r--r--Lib/test/test_bdb.py10
-rw-r--r--Misc/NEWS.d/next/Tests/2022-06-17-15-20-09.gh-issue-93951.CW1Vv4.rst1
3 files changed, 21 insertions, 0 deletions
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index 6343578..9afa282 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -1681,6 +1681,16 @@ def patch(test_instance, object_to_patch, attr_name, new_value):
setattr(object_to_patch, attr_name, new_value)
+@contextlib.contextmanager
+def patch_list(orig):
+ """Like unittest.mock.patch.dict, but for lists."""
+ try:
+ saved = orig[:]
+ yield
+ finally:
+ orig[:] = saved
+
+
def run_in_subinterp(code):
"""
Run code in a subinterpreter. Raise unittest.SkipTest if the tracemalloc
diff --git a/Lib/test/test_bdb.py b/Lib/test/test_bdb.py
index 6ec5953..87a5ac3 100644
--- a/Lib/test/test_bdb.py
+++ b/Lib/test/test_bdb.py
@@ -59,6 +59,7 @@ from contextlib import contextmanager
from itertools import islice, repeat
from test.support import import_helper
from test.support import os_helper
+from test.support import patch_list
class BdbException(Exception): pass
@@ -713,9 +714,18 @@ class StateTestCase(BaseTestCase):
with TracerRun(self) as tracer:
tracer.runcall(tfunc_main)
+ @patch_list(sys.meta_path)
def test_skip(self):
# Check that tracing is skipped over the import statement in
# 'tfunc_import()'.
+
+ # Remove all but the standard importers.
+ sys.meta_path[:] = (
+ item
+ for item in sys.meta_path
+ if item.__module__.startswith('_frozen_importlib')
+ )
+
code = """
def main():
lno = 3
diff --git a/Misc/NEWS.d/next/Tests/2022-06-17-15-20-09.gh-issue-93951.CW1Vv4.rst b/Misc/NEWS.d/next/Tests/2022-06-17-15-20-09.gh-issue-93951.CW1Vv4.rst
new file mode 100644
index 0000000..b627466
--- /dev/null
+++ b/Misc/NEWS.d/next/Tests/2022-06-17-15-20-09.gh-issue-93951.CW1Vv4.rst
@@ -0,0 +1 @@
+In test_bdb.StateTestCase.test_skip, avoid including auxiliary importers.