From 9de29afa7c083a24a5eabfbbc9bb3515e7026745 Mon Sep 17 00:00:00 2001 From: Guilherme Polo Date: Wed, 28 Jan 2009 20:40:48 +0000 Subject: [PATCH] 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. ........ --- Lib/test/regrtest.py | 12 +++++++++++- .../{test_tk_guionly.py => test_ttk_guionly.py} | 15 +++++++++++++-- .../{test_tk_textonly.py => test_ttk_textonly.py} | 5 ++++- Lib/tkinter/test/runtktests.py | 15 +++++++++++---- Lib/tkinter/test/test_ttk/test_widgets.py | 5 ++++- Misc/NEWS | 6 ++++++ 6 files changed, 49 insertions(+), 9 deletions(-) rename Lib/test/{test_tk_guionly.py => test_ttk_guionly.py} (53%) rename Lib/test/{test_tk_textonly.py => test_ttk_textonly.py} (51%) diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 43794d2d69..8ab0e4803c 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -123,6 +123,8 @@ resources to test. Currently only the following are defined: 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,-'. For example, to run all the tests except for the bsddb tests, give the option '-uall,-bsddb'. @@ -176,7 +178,7 @@ if sys.platform == 'darwin': from test import support RESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network', 'bsddb', - 'decimal', 'compiler', 'subprocess', 'urlfetch') + 'decimal', 'compiler', 'subprocess', 'urlfetch', 'gui') def usage(msg): @@ -1073,6 +1075,8 @@ _expectations = { test_pty test_socketserver test_tcl + test_ttk_guionly + test_ttk_textonly test_timeout test_urllibnet test_multiprocessing @@ -1088,6 +1092,8 @@ _expectations = { test_kqueue test_ossaudiodev test_tcl + test_ttk_guionly + test_ttk_textonly test_zipimport test_zlib """, @@ -1103,6 +1109,8 @@ _expectations = { test_ossaudiodev test_pep277 test_tcl + test_ttk_guionly + test_ttk_textonly test_multiprocessing """, 'netbsd3': @@ -1117,6 +1125,8 @@ _expectations = { test_ossaudiodev test_pep277 test_tcl + test_ttk_guionly + test_ttk_textonly test_multiprocessing """, } diff --git a/Lib/test/test_tk_guionly.py b/Lib/test/test_ttk_guionly.py similarity index 53% rename from Lib/test/test_tk_guionly.py rename to Lib/test/test_ttk_guionly.py index d3eb5a1c49..bff490af10 100644 --- a/Lib/test/test_tk_guionly.py +++ b/Lib/test/test_ttk_guionly.py @@ -1,5 +1,15 @@ -from test import support +import os +import sys +from tkinter import ttk 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): if enable_gui: @@ -8,7 +18,8 @@ def test_main(enable_gui=False): elif 'gui' not in support.use_resources: 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__': test_main(enable_gui=True) diff --git a/Lib/test/test_tk_textonly.py b/Lib/test/test_ttk_textonly.py similarity index 51% rename from Lib/test/test_tk_textonly.py rename to Lib/test/test_ttk_textonly.py index ad13244e53..131e420013 100644 --- a/Lib/test/test_tk_textonly.py +++ b/Lib/test/test_ttk_textonly.py @@ -1,8 +1,11 @@ +import os +import sys from test import support from tkinter.test import runtktests 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__': test_main() diff --git a/Lib/tkinter/test/runtktests.py b/Lib/tkinter/test/runtktests.py index 3d3868fee5..7067594017 100644 --- a/Lib/tkinter/test/runtktests.py +++ b/Lib/tkinter/test/runtktests.py @@ -19,9 +19,13 @@ def is_package(path): return True 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_ - 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' 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: 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) @@ -48,7 +55,7 @@ def get_tests_modules(basepath=this_dir_path, gui=True): if gui: 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. 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') if 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 test in getattr(module, attr, ()): yield test diff --git a/Lib/tkinter/test/test_ttk/test_widgets.py b/Lib/tkinter/test/test_ttk/test_widgets.py index e92d2fa1b8..48cf61455f 100644 --- a/Lib/tkinter/test/test_ttk/test_widgets.py +++ b/Lib/tkinter/test/test_ttk/test_widgets.py @@ -708,10 +708,13 @@ class NotebookTest(unittest.TestCase): class TreeviewTest(unittest.TestCase): def setUp(self): - self.tv = ttk.Treeview() + self.root = support.get_tk_root() + self.tv = ttk.Treeview(self.root) def tearDown(self): self.tv.destroy() + self.root.update_idletasks() + self.root.destroy() def test_bbox(self): diff --git a/Misc/NEWS b/Misc/NEWS index 04d55fef1f..f591976f8d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -423,6 +423,12 @@ Extension Modules buffer. +Tests +----- + +- Issue #5083: New 'gui' resource for regrtest. + + Docs ---- -- 2.50.1