]> granicus.if.org Git - python/commitdiff
#11910: change import_fresh_module to return None when one of the "fresh" modules...
authorEzio Melotti <ezio.melotti@gmail.com>
Mon, 9 May 2011 03:28:42 +0000 (06:28 +0300)
committerEzio Melotti <ezio.melotti@gmail.com>
Mon, 9 May 2011 03:28:42 +0000 (06:28 +0300)
Lib/test/test_support.py

index 97bfae8373402e753fc292648fcefe4aad5b2fa7..df4d1241a6890c0ac44e472a04d544451e606918 100644 (file)
@@ -84,12 +84,14 @@ def import_module(name, deprecated=False):
 def _save_and_remove_module(name, orig_modules):
     """Helper function to save and remove a module from sys.modules
 
-       Return value is True if the module was in sys.modules and
-       False otherwise."""
+       Return True if the module was in sys.modules, False otherwise.
+       Raise ImportError if the module can't be imported."""
     saved = True
     try:
         orig_modules[name] = sys.modules[name]
     except KeyError:
+        # try to import the module and raise an error if it can't be imported
+        __import__(name)
         saved = False
     else:
         del sys.modules[name]
@@ -99,8 +101,7 @@ def _save_and_remove_module(name, orig_modules):
 def _save_and_block_module(name, orig_modules):
     """Helper function to save and block a module in sys.modules
 
-       Return value is True if the module was in sys.modules and
-       False otherwise."""
+       Return True if the module was in sys.modules, False otherwise."""
     saved = True
     try:
         orig_modules[name] = sys.modules[name]
@@ -116,6 +117,7 @@ def import_fresh_module(name, fresh=(), blocked=(), deprecated=False):
     the sys.modules cache is restored to its original state.
 
     Modules named in fresh are also imported anew if needed by the import.
+    If one of these modules can't be imported, None is returned.
 
     Importing of modules named in blocked is prevented while the fresh import
     takes place.
@@ -137,6 +139,8 @@ def import_fresh_module(name, fresh=(), blocked=(), deprecated=False):
                 if not _save_and_block_module(blocked_name, orig_modules):
                     names_to_remove.append(blocked_name)
             fresh_module = importlib.import_module(name)
+        except ImportError:
+            fresh_module = None
         finally:
             for orig_name, module in orig_modules.items():
                 sys.modules[orig_name] = module