Commit 810c64df authored by Brett Cannon's avatar Brett Cannon

Issue #14764: Update importlib.test.benchmark to work in a world where

import machinery is no longer implicit.
parent 9d335113
...@@ -9,6 +9,8 @@ from .source import util as source_util ...@@ -9,6 +9,8 @@ from .source import util as source_util
import decimal import decimal
import imp import imp
import importlib import importlib
import importlib._bootstrap
import importlib.machinery
import json import json
import os import os
import py_compile import py_compile
...@@ -68,6 +70,10 @@ def source_wo_bytecode(seconds, repeat): ...@@ -68,6 +70,10 @@ def source_wo_bytecode(seconds, repeat):
# Clears out sys.modules and puts an entry at the front of sys.path. # Clears out sys.modules and puts an entry at the front of sys.path.
with source_util.create_modules(name) as mapping: with source_util.create_modules(name) as mapping:
assert not os.path.exists(imp.cache_from_source(mapping[name])) assert not os.path.exists(imp.cache_from_source(mapping[name]))
sys.meta_path.append(importlib.machinery.PathFinder)
loader = (importlib.machinery.SourceFileLoader,
importlib._bootstrap._SOURCE_SUFFIXES, True)
sys.path_hooks.append(importlib.machinery.FileFinder.path_hook(loader))
for result in bench(name, lambda: sys.modules.pop(name), repeat=repeat, for result in bench(name, lambda: sys.modules.pop(name), repeat=repeat,
seconds=seconds): seconds=seconds):
yield result yield result
...@@ -102,6 +108,10 @@ def source_writing_bytecode(seconds, repeat): ...@@ -102,6 +108,10 @@ def source_writing_bytecode(seconds, repeat):
assert not sys.dont_write_bytecode assert not sys.dont_write_bytecode
name = '__importlib_test_benchmark__' name = '__importlib_test_benchmark__'
with source_util.create_modules(name) as mapping: with source_util.create_modules(name) as mapping:
sys.meta_path.append(importlib.machinery.PathFinder)
loader = (importlib.machinery.SourceFileLoader,
importlib._bootstrap._SOURCE_SUFFIXES, True)
sys.path_hooks.append(importlib.machinery.FileFinder.path_hook(loader))
def cleanup(): def cleanup():
sys.modules.pop(name) sys.modules.pop(name)
os.unlink(imp.cache_from_source(mapping[name])) os.unlink(imp.cache_from_source(mapping[name]))
...@@ -133,6 +143,10 @@ def source_using_bytecode(seconds, repeat): ...@@ -133,6 +143,10 @@ def source_using_bytecode(seconds, repeat):
"""Source w/ bytecode: small""" """Source w/ bytecode: small"""
name = '__importlib_test_benchmark__' name = '__importlib_test_benchmark__'
with source_util.create_modules(name) as mapping: with source_util.create_modules(name) as mapping:
sys.meta_path.append(importlib.machinery.PathFinder)
loader = (importlib.machinery.SourceFileLoader,
importlib._bootstrap._SOURCE_SUFFIXES, True)
sys.path_hooks.append(importlib.machinery.FileFinder.path_hook(loader))
py_compile.compile(mapping[name]) py_compile.compile(mapping[name])
assert os.path.exists(imp.cache_from_source(mapping[name])) assert os.path.exists(imp.cache_from_source(mapping[name]))
for result in bench(name, lambda: sys.modules.pop(name), repeat=repeat, for result in bench(name, lambda: sys.modules.pop(name), repeat=repeat,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment