diff --git a/Lib/test/autotest.py b/Lib/test/autotest.py index 94ae9c11377..ba85a0d70ce 100644 --- a/Lib/test/autotest.py +++ b/Lib/test/autotest.py @@ -1,163 +1,3 @@ -""" -Automatic Python regression test. - -The list of individual tests is contained in the `testall' module. -These test some (but not all) essential parts of the Python -interpreter and built-in modules. When a test fails, an exception is -raised and testing halts. When a test succeeds, it can produce quite -a lot of output, which is compared against the output from a previous -run. If a difference is noticed it raises an exception; if all is -well, it prints nothing except 'All tests OK.' at the very end. - -The output from a previous run is supposed to be contained in separate -files (one per test) in the `output' subdirectory somewhere on the -search path for modules (sys.path, initialized from $PYTHONPATH plus -some default places). - -Of course, if the normal output of the tests is changed because the -tests have been changed (rather than a test producing the wrong -output), 'autotest' will fail as well. In this case, run 'autotest' -with the -g option. - -Usage: - - %s [-g] [-w] [-h] [test1 [test2 ...]] - -Options: - - -g, --generate : generate the output files instead of verifying - the results - - -w, --warn : warn about un-importable tests - - -h, --help : print this message - -If individual tests are provided on the command line, only those tests -will be performed or generated. Otherwise, all tests (as contained in -testall.py) will be performed. - -""" - -import os -import sys -import getopt -import traceback -import test_support -test_support.verbose = 0 -from test_support import * - -# Exception raised when the test failed (not the same as in test_support) -TestFailed = 'autotest.TestFailed' -TestMissing = 'autotest.TestMissing' - -# defaults -generate = 0 -warn = 0 - - - -# Function to find a file somewhere on sys.path -def findfile(filename): - for dirname in sys.path: - fullname = os.path.join(dirname, filename) - if os.path.exists(fullname): - return fullname - return filename # Will cause exception later - - - -# Class substituted for sys.stdout, to compare it with the given file -class Compare: - def __init__(self, filename): - self.fp = open(filename, 'r') - def write(self, data): - expected = self.fp.read(len(data)) - if data <> expected: - raise TestFailed, \ - 'Writing: '+`data`+', expected: '+`expected` - def close(self): - leftover = self.fp.read() - if leftover: - raise TestFailed, 'Unread: '+`leftover` - self.fp.close() - - -# The main program -def usage(status): - print __doc__ % sys.argv[0] - sys.exit(status) - - - -def do_one_test(t, outdir): - filename = os.path.join(outdir, t) - real_stdout = sys.stdout - if generate: - print 'Generating:', filename - fake_stdout = open(filename, 'w') - else: - try: - fake_stdout = Compare(filename) - except IOError: - raise TestMissing - try: - sys.stdout = fake_stdout - print t - unload(t) - try: - __import__(t, globals(), locals()) - except ImportError, msg: - if warn: - sys.stderr.write(msg+': Un-installed' - ' optional module?\n') - try: - fake_stdout.close() - except TestFailed: - pass - fake_stdout = None - finally: - sys.stdout = real_stdout - if fake_stdout: - fake_stdout.close() - - - -def main(): - global generate - global warn - try: - opts, args = getopt.getopt( - sys.argv[1:], 'ghw', - ['generate', 'help', 'warn']) - except getopt.error, msg: - print msg - usage(1) - for opt, val in opts: - if opt in ['-h', '--help']: - usage(0) - elif opt in ['-g', '--generate']: - generate = 1 - elif opt in ['-w', '--warn']: - warn = 1 - - # find the output directory - outdir = findfile('output') - if args: - tests = args - else: - import testall - tests = testall.tests - failed = 0 - for test in tests: - print 'testing:', test - try: - do_one_test(test, outdir) - except TestFailed, msg: - print 'test', test, 'failed' - failed = failed + 1 - if not failed: - print 'All tests OK.' - else: - print failed, 'tests failed' - -main() +# Backward compatibility -- you should use regrtest instead of this module. +import regrtest +regrtest.main() diff --git a/Lib/test/testall.py b/Lib/test/testall.py index e410e8f8bba..23493940c7b 100644 --- a/Lib/test/testall.py +++ b/Lib/test/testall.py @@ -1,54 +1,4 @@ -# This file now contains only the list of separate regression tests. -# All of the testing harness is now contained in autotest.py. - -tests = ['test_grammar', - 'test_opcodes', - 'test_operations', - 'test_builtin', - 'test_exceptions', - 'test_types', - 'test_math', - 'test_time', - 'test_array', - 'test_strop', - 'test_md5', - 'test_cmath', - 'test_crypt', - 'test_dbm', - 'test_new', - 'test_nis', - 'test_pwd', - 'test_rgbimg', - 'test_select', - 'test_strftime', - 'test_struct', - 'test_errno', - 'test_dl', - 'test_thread', - 'test_xdr', - 'test_fcntl', - 'test_gdbm', - 'test_grp', - 'test_operator', - 'test_imageop', - 'test_imgfile', - 'test_regex', - 'test_rotor', - ] - -if __name__ == '__main__': - # low-overhead testing, for cases where autotest.py harness - # doesn't even work! - import sys - from test_support import * - - for t in tests: - print t - unload(t) - try: - __import__(t, globals(), locals()) - except ImportError, msg: -## sys.stderr.write('%s. Uninstalled optional module?\n' % msg) - pass - - print 'Passed all tests.' +# Backward compatibility -- you should use regrtest instead of this module. +import sys, regrtest +sys.argv[1:] = ["-vv"] +regrtest.main()