diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2022-06-22 12:46:01 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-22 12:46:01 (GMT) |
commit | 798ace50f9d5b7d12bf3328efeebc355cbba2c7e (patch) | |
tree | 694759820740151a658d2fadb07f9d4b935f05bb | |
parent | 525ab8f310b5090e7587c5070c9e675a6e01318c (diff) | |
download | cpython-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__.py | 10 | ||||
-rw-r--r-- | Lib/test/test_bdb.py | 10 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Tests/2022-06-17-15-20-09.gh-issue-93951.CW1Vv4.rst | 1 |
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. |