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.