]> granicus.if.org Git - python/commitdiff
Save the whole of sys.modules instead of using an import tracker.
authorGeorg Brandl <georg@python.org>
Sun, 20 Jul 2008 23:18:55 +0000 (23:18 +0000)
committerGeorg Brandl <georg@python.org>
Sun, 20 Jul 2008 23:18:55 +0000 (23:18 +0000)
This, when merged to py3k, will fix the spurious buildbot failure
in test_urllib2 ("<urlopen error unknown url type: do>").

Lib/test/test_importhooks.py

index e8b4695c7bcc17dc4bf0af5fb642b6c507863561..643ecce53a5193c7347636b4c81d9c509b32fd4a 100644 (file)
@@ -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)