[Python-checkins] r85712 - python/branches/pep-382/Lib/test/test_pep382.py
eric.smith
python-checkins at python.org
Tue Oct 19 02:49:37 CEST 2010
Author: eric.smith
Date: Tue Oct 19 02:49:37 2010
New Revision: 85712
Log:
Changed to use contextlib.contextmanager; refactor the code to find matching module names.
Modified:
python/branches/pep-382/Lib/test/test_pep382.py
Modified: python/branches/pep-382/Lib/test/test_pep382.py
==============================================================================
--- python/branches/pep-382/Lib/test/test_pep382.py (original)
+++ python/branches/pep-382/Lib/test/test_pep382.py Tue Oct 19 02:49:37 2010
@@ -1,4 +1,5 @@
import unittest, sys, os
+import contextlib
from test import support
d1="d1"
@@ -7,26 +8,23 @@
d4="d4"
test_namespace_prefix = 'pep382test'
-class restoring_sys_modules:
- # in __exit__ removes any modules in sys.modules that start with module_prefix
- def __init__(self, module_prefix):
- self.module_prefix = module_prefix
-
- def __enter__(self):
- # just make sure no such modules are already present
- for key in sys.modules:
- if key.startswith(self.module_prefix):
- assert False, '{} already in sys.modules'.format(key)
-
- return self
-
- def __exit__(self, *ignore_exc):
- # delete all matching modules
-
- # convert sys.modules to a list because we're going to mutate it
- for key in list(sys.modules):
- if key.startswith(self.module_prefix):
- del sys.modules[key]
+ at contextlib.contextmanager
+def restoring_sys_modules(module_prefix):
+ # after running, removes any modules in sys.modules that start with module_prefix
+
+ def matching_modules():
+ # return module names that match the prefix
+ return [key for key in sys.modules if key.startswith(module_prefix)]
+
+ # just make sure no matching modules are already present
+ for key in matching_modules():
+ assert False, '{} already in sys.modules'.format(key)
+
+ yield
+
+ # delete all matching modules
+ for key in matching_modules():
+ del sys.modules[key]
class PthTestsBase(unittest.TestCase):
More information about the Python-checkins
mailing list