diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2022-06-22 12:05:45 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-22 12:05:45 (GMT) |
commit | c029b552f39200977325d4351803bdd13ddccc4f (patch) | |
tree | 984582ca4b4358dde51a1bc1fd94412cff4eafc0 /Lib | |
parent | ca308c13daa722f3669a14f1613da768086beb6a (diff) | |
download | cpython-c029b552f39200977325d4351803bdd13ddccc4f.zip cpython-c029b552f39200977325d4351803bdd13ddccc4f.tar.gz cpython-c029b552f39200977325d4351803bdd13ddccc4f.tar.bz2 |
gh-93951: In test_bdb.StateTestCase.test_skip, avoid including auxiliary importers. (GH-93962)
Co-authored-by: Brett Cannon <brett@python.org>
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/support/__init__.py | 10 | ||||
-rw-r--r-- | Lib/test/test_bdb.py | 10 |
2 files changed, 20 insertions, 0 deletions
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index a875548..c51a1f2 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -1768,6 +1768,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 |