mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
Save the whole of sys.modules instead of using an import tracker.
This, when merged to py3k, will fix the spurious buildbot failure in test_urllib2 ("<urlopen error unknown url type: do>").
This commit is contained in:
parent
be3ff9cdc9
commit
fa267829e7
1 changed files with 4 additions and 21 deletions
|
@ -33,15 +33,6 @@ test2_futrel_co = compile(futimp + relimp + test_src, "<???>", "exec")
|
|||
test_path = "!!!_test_!!!"
|
||||
|
||||
|
||||
class ImportTracker:
|
||||
"""Importer that only tracks attempted imports."""
|
||||
def __init__(self):
|
||||
self.imports = []
|
||||
def find_module(self, fullname, path=None):
|
||||
self.imports.append(fullname)
|
||||
return None
|
||||
|
||||
|
||||
class TestImporter:
|
||||
|
||||
modules = {
|
||||
|
@ -152,17 +143,15 @@ class ImportHooksBaseTestCase(unittest.TestCase):
|
|||
self.meta_path = sys.meta_path[:]
|
||||
self.path_hooks = sys.path_hooks[:]
|
||||
sys.path_importer_cache.clear()
|
||||
self.tracker = ImportTracker()
|
||||
sys.meta_path.insert(0, self.tracker)
|
||||
self.modules_before = sys.modules.copy()
|
||||
|
||||
def tearDown(self):
|
||||
sys.path[:] = self.path
|
||||
sys.meta_path[:] = self.meta_path
|
||||
sys.path_hooks[:] = self.path_hooks
|
||||
sys.path_importer_cache.clear()
|
||||
for fullname in self.tracker.imports:
|
||||
if fullname in sys.modules:
|
||||
del sys.modules[fullname]
|
||||
sys.modules.clear()
|
||||
sys.modules.update(self.modules_before)
|
||||
|
||||
|
||||
class ImportHooksTestCase(ImportHooksBaseTestCase):
|
||||
|
@ -261,13 +250,7 @@ class ImportHooksTestCase(ImportHooksBaseTestCase):
|
|||
for mname in mnames:
|
||||
m = __import__(mname, globals(), locals(), ["__dummy__"])
|
||||
m.__loader__ # to make sure we actually handled the import
|
||||
# Delete urllib from modules because urlparse was imported above.
|
||||
# Without this hack, test_socket_ssl fails if run in this order:
|
||||
# regrtest.py test_codecmaps_tw test_importhooks test_socket_ssl
|
||||
try:
|
||||
del sys.modules['urllib']
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(ImportHooksTestCase)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue