diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2013-05-28 01:33:40 (GMT) |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2013-05-28 01:33:40 (GMT) |
commit | 667a03b292e881f1ab0d0dba181868200d2abaf9 (patch) | |
tree | 9eb17a58fb25b66234f67c4c2de6d960456fecb5 | |
parent | fc508dd608ba151d1446457c4c1bb2838e0deef9 (diff) | |
parent | db4e5c53c9a68cbb19a8daca0c454360d1045c6f (diff) | |
download | cpython-667a03b292e881f1ab0d0dba181868200d2abaf9.zip cpython-667a03b292e881f1ab0d0dba181868200d2abaf9.tar.gz cpython-667a03b292e881f1ab0d0dba181868200d2abaf9.tar.bz2 |
Merge with 3.3
-rw-r--r-- | Lib/idlelib/CallTips.py | 4 | ||||
-rw-r--r-- | Lib/idlelib/PathBrowser.py | 3 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/@README.txt | 63 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/__init__.py | 9 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/test_calltips.py | 11 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/test_pathbrowser.py | 12 | ||||
-rw-r--r-- | Lib/test/test_idle.py | 14 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
9 files changed, 118 insertions, 2 deletions
diff --git a/Lib/idlelib/CallTips.py b/Lib/idlelib/CallTips.py index 3c8c096..41de756 100644 --- a/Lib/idlelib/CallTips.py +++ b/Lib/idlelib/CallTips.py @@ -264,4 +264,6 @@ def main(): print("%d of %d tests failed" % (num_fail, num_tests)) if __name__ == '__main__': - main() + #main() + from unittest import main + main('idlelib.idle_test.test_calltips', verbosity=2, exit=False) diff --git a/Lib/idlelib/PathBrowser.py b/Lib/idlelib/PathBrowser.py index ab05c67..8ea553d 100644 --- a/Lib/idlelib/PathBrowser.py +++ b/Lib/idlelib/PathBrowser.py @@ -95,4 +95,5 @@ def main(): mainloop() if __name__ == "__main__": - main() + from unittest import main + main('idlelib.idle_test.test_pathbrowser', verbosity=2, exit=False) diff --git a/Lib/idlelib/idle_test/@README.txt b/Lib/idlelib/idle_test/@README.txt new file mode 100644 index 0000000..f6797c6 --- /dev/null +++ b/Lib/idlelib/idle_test/@README.txt @@ -0,0 +1,63 @@ +README FOR IDLE TESTS IN IDLELIB.IDLE_TEST + +The idle directory, idlelib, has over 60 xyz.py files. The idle_test +subdirectory should contain a test_xyy.py for each one. (For test modules, +make 'xyz' lower case.) Each should start with the following cut-paste +template, with the blanks after after '.'. 'as', and '_' filled in. +--- +import unittest +import idlelib. as + +class Test_(unittest.TestCase): + + def test_(self): + +if __name__ == '__main__': + unittest.main(verbosity=2, exit=2) +--- +Idle tests are run with unittest; do not use regrtest's test_main. + +Once test_xyy is written, the following should go at the end of xyy.py, +with xyz (lowercased) added after 'test_'. +--- +if __name__ == "__main__": + import unittest + unittest.main('idlelib.idle_test.test_', verbosity=2, exit=False) +--- + +In Idle, pressing F5 in an editor window with either xyz.py or test_xyz.py +loaded will then run the test with the version of Python running Idle and +tracebacks will appear in the Shell window. The options are appropriate for +developers running (as opposed to importing) either type of file during +development: verbosity=2 lists all test_y methods; exit=False avoids a +spurious sys.exit traceback when running in Idle. The following command +lines also run test_xyz.py + +python -m idlelib.xyz # With the capitalization of the xyz module +python -m unittest -v idlelib.idle_test.test_xyz + +To run all idle tests either interactively ('>>>', with unittest imported) +or from a command line, use one of the following. + +>>> unittest.main('idlelib.idle_test', verbosity=2, exit=False) +python -m unittest -v idlelib.idle_test +python -m test.test_idle +python -m test test_idle + +The idle tests are 'discovered' in idlelib.idle_test.__init__.load_tests, +which is also imported into test.test_idle. Normally, neither file should be +changed when working on individual test modules. The last command runs runs +unittest indirectly through regrtest. The same happens when the entire test +suite is run with 'python -m test'. So it must work for buildbots to stay green. + +To run an individual Testcase or test method, extend the +dotted name given to unittest on the command line. + +python -m unittest -v idlelib.idle_test.text_xyz.Test_case.test_meth + +To disable test/test_idle.py, there are at least two choices. +a. Comment out 'load_tests' line, no no tests are discovered (simple and safe); +Running no tests passes, so there is no indication that nothing was run. +b.Before that line, make module an unexpected skip for regrtest with +import unittest; raise unittest.SkipTest('skip for buildbots') +When run directly with unittest, this causes a normal exit and traceback.
\ No newline at end of file diff --git a/Lib/idlelib/idle_test/__init__.py b/Lib/idlelib/idle_test/__init__.py new file mode 100644 index 0000000..1bc9536 --- /dev/null +++ b/Lib/idlelib/idle_test/__init__.py @@ -0,0 +1,9 @@ +from os.path import dirname + +def load_tests(loader, standard_tests, pattern): + this_dir = dirname(__file__) + top_dir = dirname(dirname(this_dir)) + package_tests = loader.discover(start_dir=this_dir, pattern='test*.py', + top_level_dir=top_dir) + standard_tests.addTests(package_tests) + return standard_tests diff --git a/Lib/idlelib/idle_test/test_calltips.py b/Lib/idlelib/idle_test/test_calltips.py new file mode 100644 index 0000000..a956967 --- /dev/null +++ b/Lib/idlelib/idle_test/test_calltips.py @@ -0,0 +1,11 @@ +import unittest +import idlelib.CallTips as ct + +class Test_get_entity(unittest.TestCase): + def test_bad_entity(self): + self.assertIsNone(ct.get_entity('1/0')) + def test_good_entity(self): + self.assertIs(ct.get_entity('int'), int) + +if __name__ == '__main__': + unittest.main(verbosity=2, exit=False) diff --git a/Lib/idlelib/idle_test/test_pathbrowser.py b/Lib/idlelib/idle_test/test_pathbrowser.py new file mode 100644 index 0000000..7ad7c97 --- /dev/null +++ b/Lib/idlelib/idle_test/test_pathbrowser.py @@ -0,0 +1,12 @@ +import unittest +import idlelib.PathBrowser as PathBrowser + +class PathBrowserTest(unittest.TestCase): + + def test_DirBrowserTreeItem(self): + # Issue16226 - make sure that getting a sublist works + d = PathBrowser.DirBrowserTreeItem('') + d.GetSubList() + +if __name__ == '__main__': + unittest.main(verbosity=2, exit=False) diff --git a/Lib/test/test_idle.py b/Lib/test/test_idle.py new file mode 100644 index 0000000..1c18280 --- /dev/null +++ b/Lib/test/test_idle.py @@ -0,0 +1,14 @@ +# Skip test if tkinter wasn't built or idlelib was deleted. +from test.support import import_module +import_module('tkinter') # discard return +itdir = import_module('idlelib.idle_test') + +# Without test_main present, regrtest.runtest_inner (line1219) +# imitates unittest.main by calling +# unittest.TestLoader().loadTestsFromModule(this_module) +# which look for load_tests and uses it if found. +load_tests = itdir.load_tests + +if __name__ == '__main__': + import unittest + unittest.main(verbosity=2, exit=False) @@ -584,6 +584,7 @@ Jack Jansen Bill Janssen Thomas Jarosch Juhana Jauhiainen +Rajagopalasarma Jayakrishnan Zbigniew Jędrzejewski-Szmek Julien Jehannet Drew Jenkins @@ -13,6 +13,9 @@ Core and Builtins - Issue #17206: Py_CLEAR(), Py_DECREF(), Py_XINCREF() and Py_XDECREF() now expand their arguments once instead of multiple times. Patch written by Illia Polosukhin. +- Issue #15392: Create a unittest framework for IDLE. + Rajagopalasarma Jayakrishnan + - Issue #17937: Try harder to collect cyclic garbage at shutdown. |