diff options
author | Guilherme Polo <ggpolo@gmail.com> | 2009-01-28 13:09:03 (GMT) |
---|---|---|
committer | Guilherme Polo <ggpolo@gmail.com> | 2009-01-28 13:09:03 (GMT) |
commit | cda93aafde744df8006950c13e9893f29a747c31 (patch) | |
tree | 60e69e4b467f4c3e92cee15cba3a62916c362c8c /Lib/lib-tk/test/runtktests.py | |
parent | fd0107fdf9e3ef5bfc77010fa3d8f44e1f28441f (diff) | |
download | cpython-cda93aafde744df8006950c13e9893f29a747c31.zip cpython-cda93aafde744df8006950c13e9893f29a747c31.tar.gz cpython-cda93aafde744df8006950c13e9893f29a747c31.tar.bz2 |
Added the ttk module. See issue #2983: Ttk support for Tkinter.
Diffstat (limited to 'Lib/lib-tk/test/runtktests.py')
-rw-r--r-- | Lib/lib-tk/test/runtktests.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/Lib/lib-tk/test/runtktests.py b/Lib/lib-tk/test/runtktests.py new file mode 100644 index 0000000..b72badf --- /dev/null +++ b/Lib/lib-tk/test/runtktests.py @@ -0,0 +1,65 @@ +""" +Use this module to get and run all tk tests. + +Tkinter tests should live in a package inside the directory where this file +lives, like test_tkinter. +Extensions also should live in packages following the same rule as above. +""" + +import os +import sys +import unittest +import test.test_support + +this_dir_path = os.path.abspath(os.path.dirname(__file__)) + +def is_package(path): + for name in os.listdir(path): + if name in ('__init__.py', '__init__.pyc', '__init.pyo'): + return True + return False + +def get_tests_modules(basepath=this_dir_path, gui=True): + """This will import and yield modules whose names start with test_ + and are inside packages found in the path starting at basepath.""" + py_ext = '.py' + + for dirpath, dirnames, filenames in os.walk(basepath): + for dirname in list(dirnames): + if dirname[0] == '.': + dirnames.remove(dirname) + + if is_package(dirpath) and filenames: + pkg_name = dirpath[len(basepath) + len(os.sep):].replace('/', '.') + filenames = filter( + lambda x: x.startswith('test_') and x.endswith(py_ext), + filenames) + + for name in filenames: + try: + yield __import__( + "%s.%s" % (pkg_name, name[:-len(py_ext)]), + fromlist=[''] + ) + except test.test_support.ResourceDenied: + if gui: + raise + +def get_tests(text=True, gui=True): + """Yield all the tests in the modules found by get_tests_modules. + + If nogui is True, only tests that do not require a GUI will be + returned.""" + attrs = [] + if text: + attrs.append('tests_nogui') + if gui: + attrs.append('tests_gui') + for module in get_tests_modules(gui=gui): + for attr in attrs: + for test in getattr(module, attr, ()): + yield test + +if __name__ == "__main__": + test.test_support.use_resources = ['gui'] + test.test_support.run_unittest(*get_tests()) |