gh-93951: In test_bdb.StateTestCase.test_skip, avoid including auxiliary importers. (GH-93962)

Co-authored-by: Brett Cannon <brett@python.org>
This commit is contained in:
Jason R. Coombs 2022-06-22 08:05:45 -04:00 committed by GitHub
parent ca308c13da
commit c029b552f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
In test_bdb.StateTestCase.test_skip, avoid including auxiliary importers.