summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorEzio Melotti <ezio.melotti@gmail.com>2011-05-09 03:41:55 (GMT)
committerEzio Melotti <ezio.melotti@gmail.com>2011-05-09 03:41:55 (GMT)
commit199e0857f9040c56d7a37fac62fdc5b0df7a08a7 (patch)
tree2edb91964042c47a8430c0b3f5bcad52cfcfd38d /Lib/test
parent0ed8c6897c2330950643fda6c6e8ee283c030311 (diff)
downloadcpython-199e0857f9040c56d7a37fac62fdc5b0df7a08a7.zip
cpython-199e0857f9040c56d7a37fac62fdc5b0df7a08a7.tar.gz
cpython-199e0857f9040c56d7a37fac62fdc5b0df7a08a7.tar.bz2
#11910: change import_fresh_module to return None when one of the "fresh" modules can not be imported.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/support.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/Lib/test/support.py b/Lib/test/support.py
index 9675df5..b2f0f87 100644
--- a/Lib/test/support.py
+++ b/Lib/test/support.py
@@ -80,12 +80,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]
@@ -95,8 +97,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]
@@ -112,6 +113,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.
@@ -133,6 +135,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