[Python-checkins] r75461 - in python/trunk/Lib/test: test_support.py test_ttk_guionly.py test_ttk_textonly.py

nick.coghlan python-checkins at python.org
Sat Oct 17 16:40:55 CEST 2009


Author: nick.coghlan
Date: Sat Oct 17 16:40:54 2009
New Revision: 75461
Log:
Restore original sys.path when running TTK tests
Modified:
 python/trunk/Lib/test/test_support.py
 python/trunk/Lib/test/test_ttk_guionly.py
 python/trunk/Lib/test/test_ttk_textonly.py
Modified: python/trunk/Lib/test/test_support.py
==============================================================================
--- python/trunk/Lib/test/test_support.py	(original)
+++ python/trunk/Lib/test/test_support.py	Sat Oct 17 16:40:54 2009
@@ -578,6 +578,31 @@
 self._environ[k] = v
 
 
+class DirsOnSysPath(object):
+ """Context manager to temporarily add directories to sys.path.
+
+ This makes a copy of sys.path, appends any directories given
+ as positional arguments, then reverts sys.path to the copied
+ settings when the context ends.
+
+ Note that *all* sys.path modifications in the body of the
+ context manager, including replacement of the object,
+ will be reverted at the end of the block.
+ """
+
+ def __init__(self, *paths):
+ self.original_value = sys.path[:]
+ self.original_object = sys.path
+ sys.path.extend(paths)
+
+ def __enter__(self):
+ return self
+
+ def __exit__(self, *ignore_exc):
+ sys.path = self.original_object
+ sys.path[:] = self.original_value
+
+
 class TransientResource(object):
 
 """Raise ResourceDenied if an exception is raised while the context manager
Modified: python/trunk/Lib/test/test_ttk_guionly.py
==============================================================================
--- python/trunk/Lib/test/test_ttk_guionly.py	(original)
+++ python/trunk/Lib/test/test_ttk_guionly.py	Sat Oct 17 16:40:54 2009
@@ -18,10 +18,9 @@
 this_dir = os.path.dirname(os.path.abspath(__file__))
 lib_tk_test = os.path.abspath(os.path.join(this_dir, os.path.pardir,
 'lib-tk', 'test'))
-if lib_tk_test not in sys.path:
- sys.path.append(lib_tk_test)
 
-import runtktests
+with test_support.DirsOnSysPath(lib_tk_test):
+ import runtktests
 
 def test_main(enable_gui=False):
 if enable_gui:
@@ -30,7 +29,8 @@
 elif 'gui' not in test_support.use_resources:
 test_support.use_resources.append('gui')
 
- test_support.run_unittest(
+ with test_support.DirsOnSysPath(lib_tk_test):
+ test_support.run_unittest(
 *runtktests.get_tests(text=False, packages=['test_ttk']))
 
 if __name__ == '__main__':
Modified: python/trunk/Lib/test/test_ttk_textonly.py
==============================================================================
--- python/trunk/Lib/test/test_ttk_textonly.py	(original)
+++ python/trunk/Lib/test/test_ttk_textonly.py	Sat Oct 17 16:40:54 2009
@@ -7,13 +7,13 @@
 
 this_dir = os.path.dirname(os.path.abspath(__file__))
 lib_tk_test = os.path.abspath(os.path.join(this_dir, '..', 'lib-tk', 'test'))
-if lib_tk_test not in sys.path:
- sys.path.append(lib_tk_test)
 
-import runtktests
+with test_support.DirsOnSysPath(lib_tk_test):
+ import runtktests
 
 def test_main():
- test_support.run_unittest(
+ with test_support.DirsOnSysPath(lib_tk_test):
+ test_support.run_unittest(
 *runtktests.get_tests(gui=False, packages=['test_ttk']))
 
 if __name__ == '__main__':


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /