diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2009-10-17 14:40:54 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2009-10-17 14:40:54 (GMT) |
commit | 7df72dcdf9219db2f10889809d75f9bd8a99c14f (patch) | |
tree | d2730ef7c0e75377742fee6bc2875e3e657a8f3c | |
parent | e363b1434d6d659bdb94ab522a9da78f1f5a8bef (diff) | |
download | cpython-7df72dcdf9219db2f10889809d75f9bd8a99c14f.zip cpython-7df72dcdf9219db2f10889809d75f9bd8a99c14f.tar.gz cpython-7df72dcdf9219db2f10889809d75f9bd8a99c14f.tar.bz2 |
Restore original sys.path when running TTK tests
-rw-r--r-- | Lib/test/test_support.py | 25 | ||||
-rw-r--r-- | Lib/test/test_ttk_guionly.py | 8 | ||||
-rw-r--r-- | Lib/test/test_ttk_textonly.py | 8 |
3 files changed, 33 insertions, 8 deletions
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 432fa52..45b1b01 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -578,6 +578,31 @@ class EnvironmentVarGuard(UserDict.DictMixin): 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 diff --git a/Lib/test/test_ttk_guionly.py b/Lib/test/test_ttk_guionly.py index 379ebae..421f014 100644 --- a/Lib/test/test_ttk_guionly.py +++ b/Lib/test/test_ttk_guionly.py @@ -18,10 +18,9 @@ except TclError, msg: 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 @@ def test_main(enable_gui=False): 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__': diff --git a/Lib/test/test_ttk_textonly.py b/Lib/test/test_ttk_textonly.py index dde1b35..e0cb2f5 100644 --- a/Lib/test/test_ttk_textonly.py +++ b/Lib/test/test_ttk_textonly.py @@ -7,13 +7,13 @@ test_support.import_module('_tkinter') 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__': |