Merged revisions 69060-69063 via svnmerge from

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.
........
This commit is contained in:
Guilherme Polo 2009-01-28 20:40:48 +00:00
parent a7d2797e80
commit 9de29afa7c
6 changed files with 49 additions and 9 deletions

View File

@ -123,6 +123,8 @@ resources to test. Currently only the following are defined:
urlfetch - It is okay to download files required on testing. urlfetch - It is okay to download files required on testing.
gui - Run tests that require a running GUI.
To enable all resources except one, use '-uall,-<resource>'. For To enable all resources except one, use '-uall,-<resource>'. For
example, to run all the tests except for the bsddb tests, give the example, to run all the tests except for the bsddb tests, give the
option '-uall,-bsddb'. option '-uall,-bsddb'.
@ -176,7 +178,7 @@ if sys.platform == 'darwin':
from test import support from test import support
RESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network', 'bsddb', RESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network', 'bsddb',
'decimal', 'compiler', 'subprocess', 'urlfetch') 'decimal', 'compiler', 'subprocess', 'urlfetch', 'gui')
def usage(msg): def usage(msg):
@ -1073,6 +1075,8 @@ _expectations = {
test_pty test_pty
test_socketserver test_socketserver
test_tcl test_tcl
test_ttk_guionly
test_ttk_textonly
test_timeout test_timeout
test_urllibnet test_urllibnet
test_multiprocessing test_multiprocessing
@ -1088,6 +1092,8 @@ _expectations = {
test_kqueue test_kqueue
test_ossaudiodev test_ossaudiodev
test_tcl test_tcl
test_ttk_guionly
test_ttk_textonly
test_zipimport test_zipimport
test_zlib test_zlib
""", """,
@ -1103,6 +1109,8 @@ _expectations = {
test_ossaudiodev test_ossaudiodev
test_pep277 test_pep277
test_tcl test_tcl
test_ttk_guionly
test_ttk_textonly
test_multiprocessing test_multiprocessing
""", """,
'netbsd3': 'netbsd3':
@ -1117,6 +1125,8 @@ _expectations = {
test_ossaudiodev test_ossaudiodev
test_pep277 test_pep277
test_tcl test_tcl
test_ttk_guionly
test_ttk_textonly
test_multiprocessing test_multiprocessing
""", """,
} }

View File

@ -1,5 +1,15 @@
from test import support import os
import sys
from tkinter import ttk
from tkinter.test import runtktests from tkinter.test import runtktests
from _tkinter import TclError
from test import support
try:
ttk.Button()
except TclError as msg:
# assuming ttk is not available
raise support.TestSkipped("ttk not available: %s" % msg)
def test_main(enable_gui=False): def test_main(enable_gui=False):
if enable_gui: if enable_gui:
@ -8,7 +18,8 @@ def test_main(enable_gui=False):
elif 'gui' not in support.use_resources: elif 'gui' not in support.use_resources:
support.use_resources.append('gui') support.use_resources.append('gui')
support.run_unittest(*runtktests.get_tests(text=False)) support.run_unittest(
*runtktests.get_tests(text=False, packages=['test_ttk']))
if __name__ == '__main__': if __name__ == '__main__':
test_main(enable_gui=True) test_main(enable_gui=True)

View File

@ -1,8 +1,11 @@
import os
import sys
from test import support from test import support
from tkinter.test import runtktests from tkinter.test import runtktests
def test_main(): def test_main():
support.run_unittest(*runtktests.get_tests(gui=False)) support.run_unittest(
*runtktests.get_tests(gui=False, packages=['test_ttk']))
if __name__ == '__main__': if __name__ == '__main__':
test_main() test_main()

View File

@ -19,9 +19,13 @@ def is_package(path):
return True return True
return False return False
def get_tests_modules(basepath=this_dir_path, gui=True): def get_tests_modules(basepath=this_dir_path, gui=True, packages=None):
"""This will import and yield modules whose names start with test_ """This will import and yield modules whose names start with test_
and are inside packages found in the path starting at basepath.""" 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' py_ext = '.py'
for dirpath, dirnames, filenames in os.walk(basepath): for dirpath, dirnames, filenames in os.walk(basepath):
@ -31,6 +35,9 @@ def get_tests_modules(basepath=this_dir_path, gui=True):
if is_package(dirpath) and filenames: if is_package(dirpath) and filenames:
pkg_name = dirpath[len(basepath) + len(os.sep):].replace('/', '.') pkg_name = dirpath[len(basepath) + len(os.sep):].replace('/', '.')
if packages and pkg_name not in packages:
continue
filenames = filter( filenames = filter(
lambda x: x.startswith('test_') and x.endswith(py_ext), lambda x: x.startswith('test_') and x.endswith(py_ext),
filenames) filenames)
@ -48,7 +55,7 @@ def get_tests_modules(basepath=this_dir_path, gui=True):
if gui: if gui:
raise raise
def get_tests(text=True, gui=True): def get_tests(text=True, gui=True, packages=None):
"""Yield all the tests in the modules found by get_tests_modules. """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 If nogui is True, only tests that do not require a GUI will be
@ -58,7 +65,7 @@ def get_tests(text=True, gui=True):
attrs.append('tests_nogui') attrs.append('tests_nogui')
if gui: if gui:
attrs.append('tests_gui') attrs.append('tests_gui')
for module in get_tests_modules(gui=gui): for module in get_tests_modules(gui=gui, packages=packages):
for attr in attrs: for attr in attrs:
for test in getattr(module, attr, ()): for test in getattr(module, attr, ()):
yield test yield test

View File

@ -708,10 +708,13 @@ class NotebookTest(unittest.TestCase):
class TreeviewTest(unittest.TestCase): class TreeviewTest(unittest.TestCase):
def setUp(self): def setUp(self):
self.tv = ttk.Treeview() self.root = support.get_tk_root()
self.tv = ttk.Treeview(self.root)
def tearDown(self): def tearDown(self):
self.tv.destroy() self.tv.destroy()
self.root.update_idletasks()
self.root.destroy()
def test_bbox(self): def test_bbox(self):

View File

@ -423,6 +423,12 @@ Extension Modules
buffer. buffer.
Tests
-----
- Issue #5083: New 'gui' resource for regrtest.
Docs Docs
---- ----