mirror of https://github.com/python/cpython
Restore original sys.path when running TTK tests
This commit is contained in:
parent
e363b1434d
commit
7df72dcdf9
|
@ -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
|
||||
|
|
|
@ -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,6 +29,7 @@ def test_main(enable_gui=False):
|
|||
elif 'gui' not in test_support.use_resources:
|
||||
test_support.use_resources.append('gui')
|
||||
|
||||
with test_support.DirsOnSysPath(lib_tk_test):
|
||||
test_support.run_unittest(
|
||||
*runtktests.get_tests(text=False, packages=['test_ttk']))
|
||||
|
||||
|
|
|
@ -7,12 +7,12 @@ 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():
|
||||
with test_support.DirsOnSysPath(lib_tk_test):
|
||||
test_support.run_unittest(
|
||||
*runtktests.get_tests(gui=False, packages=['test_ttk']))
|
||||
|
||||
|
|
Loading…
Reference in New Issue