mirror of
https://github.com/python/cpython.git
synced 2024-12-01 03:01:36 +01:00
9de29afa7c
svn+ssh://pythondev/python/trunk ........ r69060 | guilherme.polo | 2009-01-28 17:23:28 -0200 (Wed, 28 Jan 2009) | 2 lines Added support for collecting tests only from specific packages. ........ r69061 | guilherme.polo | 2009-01-28 17:28:04 -0200 (Wed, 28 Jan 2009) | 4 lines * Renaming test_tk_* to test_ttk_* since that is what they are testing. * Added ttk tests to the expected skips mapping just like where test_tcl was expected to be skipped too. ........ r69062 | guilherme.polo | 2009-01-28 18:02:01 -0200 (Wed, 28 Jan 2009) | 1 line Make sure the root windows gets destroyed ........ r69063 | guilherme.polo | 2009-01-28 18:03:26 -0200 (Wed, 28 Jan 2009) | 2 lines Issue #5083: New 'gui' resource for regrtest. ........
76 lines
2.4 KiB
Python
76 lines
2.4 KiB
Python
"""
|
|
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.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, packages=None):
|
|
"""This will import and yield modules whose names start with test_
|
|
and are inside packages found in the path starting at basepath.
|
|
|
|
If packages is specified it should contain package names that
|
|
want their tests collected.
|
|
"""
|
|
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('/', '.')
|
|
if packages and pkg_name not in packages:
|
|
continue
|
|
|
|
filenames = filter(
|
|
lambda x: x.startswith('test_') and x.endswith(py_ext),
|
|
filenames)
|
|
|
|
for name in filenames:
|
|
try:
|
|
yield __import__(
|
|
"%s.%s.%s" % (
|
|
"tkinter.test",
|
|
pkg_name,
|
|
name[:-len(py_ext)]),
|
|
fromlist=['']
|
|
)
|
|
except test.support.ResourceDenied:
|
|
if gui:
|
|
raise
|
|
|
|
def get_tests(text=True, gui=True, packages=None):
|
|
"""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, packages=packages):
|
|
for attr in attrs:
|
|
for test in getattr(module, attr, ()):
|
|
yield test
|
|
|
|
if __name__ == "__main__":
|
|
test.support.use_resources = ['gui']
|
|
test.support.run_unittest(*get_tests())
|