From eb4c9c77b8257c05b40467651bdc7764295926e8 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Tue, 28 May 2013 22:21:53 -0400 Subject: Issue #15392: Do not run tests if threading/_thread not available. Otherwise touchup test_idle. Rename README.txt. --- Lib/idlelib/idle_test/@README.txt | 63 --------------------------------------- Lib/idlelib/idle_test/README.txt | 63 +++++++++++++++++++++++++++++++++++++++ Lib/test/test_idle.py | 16 +++++----- 3 files changed, 71 insertions(+), 71 deletions(-) delete mode 100644 Lib/idlelib/idle_test/@README.txt create mode 100644 Lib/idlelib/idle_test/README.txt diff --git a/Lib/idlelib/idle_test/@README.txt b/Lib/idlelib/idle_test/@README.txt deleted file mode 100644 index f6797c6..0000000 --- a/Lib/idlelib/idle_test/@README.txt +++ /dev/null @@ -1,63 +0,0 @@ -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/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/test/test_idle.py b/Lib/test/test_idle.py index 1c18280..1acd676 100644 --- a/Lib/test/test_idle.py +++ b/Lib/test/test_idle.py @@ -1,13 +1,13 @@ -# Skip test if tkinter wasn't built or idlelib was deleted. +# Skip test if _tkinter or _thread wasn't built or idlelib was deleted. from test.support import import_module -import_module('tkinter') # discard return -itdir = import_module('idlelib.idle_test') +import_module('tkinter') +import_module('threading') # imported by PyShell, imports _thread +idletest = 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 +# Without test_main present, regrtest.runtest_inner (line1219) calls +# unittest.TestLoader().loadTestsFromModule(this_module) which calls +# load_tests() if it finds it. (Unittest.main does the same.) +load_tests = idletest.load_tests if __name__ == '__main__': import unittest -- cgit v0.12