diff options
Diffstat (limited to 'Lib/test/support.py')
| -rw-r--r-- | Lib/test/support.py | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/Lib/test/support.py b/Lib/test/support.py index 380d5a8..cab366b 100644 --- a/Lib/test/support.py +++ b/Lib/test/support.py @@ -92,12 +92,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] @@ -107,8 +109,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] @@ -124,6 +125,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. @@ -145,6 +147,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  | 
