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