regrtest.py revision 32d0c1b458bbdda8d8895f5b5bedfb4644f839e7
1152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum#! /usr/bin/env python 2152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 3152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum"""Regression test. 4152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 5152494aea24669a3d74460fa460a4ed45696bc75Guido van RossumThis will find all modules whose name is "test_*" in the test 6152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumdirectory, and run them. Various command line options provide 7152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumadditional facilities. 8152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 9152494aea24669a3d74460fa460a4ed45696bc75Guido van RossumCommand line options: 10152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 11a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw-v: verbose -- run tests in verbose mode with output to stdout 12a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw-q: quiet -- don't print anything except if a test fails 13a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw-g: generate -- write the output file for a test instead of comparing it 14a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw-x: exclude -- arguments are tests to *exclude* 15a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw-s: single -- run only a single test (see below) 16a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw-r: random -- randomize test execution order 17c5000dfc4098f8547461e790a91536a923124261Tim Peters-f: fromfile -- read names of tests to run from a file (see below) 188a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer-l: findleaks -- if GC is available detect tests that leak memory 1908fca5212528e073600c27c70a34eeef445f393bBarry Warsaw-u: use -- specify which special resource intensive tests to run 2008fca5212528e073600c27c70a34eeef445f393bBarry Warsaw-h: help -- print this text and exit 219e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum-t: threshold -- call gc.set_threshold(N) 223b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw-T: coverage -- turn on code coverage using the trace module 230179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro-L: runleaks -- run the leaks(1) command just before exit 24152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 25152494aea24669a3d74460fa460a4ed45696bc75Guido van RossumIf non-option arguments are present, they are names for tests to run, 26152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumunless -x is given, in which case they are names for tests not to run. 27152494aea24669a3d74460fa460a4ed45696bc75Guido van RossumIf no test names are given, all tests are run. 28f58ed2596706b97c16174a839c1ed6f6b1f87fa6Guido van Rossum 29a412220bbf8ef8391eb38b35d62520cfbc2fc039Guido van Rossum-v is incompatible with -g and does not compare test output files. 30e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 313b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw-T turns on code coverage tracing with the trace module. 323b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw 339e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum-s means to run only a single test and exit. This is useful when 349e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumdoing memory analysis on the Python interpreter (which tend to consume 359e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumtoo many resources to run the full regression test non-stop). The 369e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumfile /tmp/pynexttest is read to find the next test to run. If this 379e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumfile is missing, the first test_*.py file in testdir or on the command 389e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumline is used. (actually tempfile.gettempdir() is used instead of 399e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum/tmp). 40e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 419e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum-f reads the names of tests from the file given as f's argument, one 429e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumor more test names per line. Whitespace is ignored. Blank lines and 439e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumlines beginning with '#' are ignored. This is especially useful for 449e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumwhittling down failures involving interactions among tests. 45c5000dfc4098f8547461e790a91536a923124261Tim Peters 460179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro-L causes the leaks(1) command to be run just before exit if it exists. 470179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaroleaks(1) is available on Mac OS X and presumably on some other 480179a18034b2316a70655d0f05bfbb20a0881f17Skip MontanaroFreeBSD-derived systems. 490179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro 509e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum-u is used to specify which special resource intensive tests to run, 519e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumsuch as those requiring large file support or network connectivity. 529e9d4f8ed8d467d0558251f43c5decc754712d53Guido van RossumThe argument is a comma-separated list of words indicating the 539e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumresources to test. Currently only the following are defined: 5408fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 553a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake all - Enable all special resources. 563a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake 57315aa361fc60d3328aad3a5dcfd42f08213c25fbGuido van Rossum audio - Tests that use the audio device. (There are known 58315aa361fc60d3328aad3a5dcfd42f08213c25fbGuido van Rossum cases of broken audio drivers that can crash Python or 59315aa361fc60d3328aad3a5dcfd42f08213c25fbGuido van Rossum even the Linux kernel.) 60315aa361fc60d3328aad3a5dcfd42f08213c25fbGuido van Rossum 612158df0b4d8358b5efdcac3024e8cc6d6c92d981Andrew M. Kuchling curses - Tests that use curses and will modify the terminal's 622158df0b4d8358b5efdcac3024e8cc6d6c92d981Andrew M. Kuchling state and output modes. 631633a2e3452b40d0e9bb1f15ab16cd6b90f15a19Tim Peters 649e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum largefile - It is okay to run some test that may create huge 659e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum files. These tests can take a long time and may 669e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum consume >2GB of disk space temporarily. 6708fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 689e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum network - It is okay to run tests that use external network 699e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum resource, e.g. testing SSL support for sockets. 701c6b1a2b4ea38955a3f0514f4709bafd0be96c5eMartin v. Löwis 711c6b1a2b4ea38955a3f0514f4709bafd0be96c5eMartin v. Löwis bsddb - It is okay to run the bsddb testsuite, which takes 721c6b1a2b4ea38955a3f0514f4709bafd0be96c5eMartin v. Löwis a long time to complete. 734dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake 747c85fa4a5203912aca564ce719a0fdd0fd5411e5Raymond Hettinger decimal - Test the decimal module against a large suite that 757c85fa4a5203912aca564ce719a0fdd0fd5411e5Raymond Hettinger verifies compliance with standards. 767c85fa4a5203912aca564ce719a0fdd0fd5411e5Raymond Hettinger 774dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred DrakeTo enable all resources except one, use '-uall,-<resource>'. For 784dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drakeexample, to run all the tests except for the bsddb tests, give the 794dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drakeoption '-uall,-bsddb'. 80152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum""" 81152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 82152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumimport os 833b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawimport sys 84152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumimport getopt 85ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaroimport random 86dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossumimport warnings 873b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawimport cStringIO 883b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawimport traceback 89dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum 90dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum# I see no other way to suppress these warnings; 91dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum# putting them in test_grammar.py has no effect: 9288b1defb6f770c4f74788e8296b88fc31c3936ceGuido van Rossumwarnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, 93dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum ".*test.test_grammar$") 94c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossumif sys.maxint > 0x7fffffff: 95c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum # Also suppress them in <string>, because for 64-bit platforms, 96c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum # that's where test_grammar.py hides them. 97c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, 98c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum "<string>") 99152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 100bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# MacOSX (a.k.a. Darwin) has a default stack size that is too small 101bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# for deeply recursive regular expressions. We see this as crashes in 102bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# the Python test suite when running test_re.py and test_sre.py. The 103bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# fix is to set the stack limit to 2048. 104bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# This approach may also be useful for other Unixy platforms that 105bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# suffer from small default stack limits. 106bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossumif sys.platform == 'darwin': 107bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum try: 108bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum import resource 109bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum except ImportError: 110bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum pass 111bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum else: 112bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum soft, hard = resource.getrlimit(resource.RLIMIT_STACK) 113bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum newsoft = min(hard, max(soft, 1024*2048)) 114bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum resource.setrlimit(resource.RLIMIT_STACK, (newsoft, hard)) 115bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum 11604f357cffef6d764f2f0ff2671dabde75ec250d1Barry Warsawfrom test import test_support 1173a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake 1187c85fa4a5203912aca564ce719a0fdd0fd5411e5Raymond HettingerRESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network', 'bsddb', 1197c85fa4a5203912aca564ce719a0fdd0fd5411e5Raymond Hettinger 'decimal') 1203a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake 1213a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake 12208fca5212528e073600c27c70a34eeef445f393bBarry Warsawdef usage(code, msg=''): 12308fca5212528e073600c27c70a34eeef445f393bBarry Warsaw print __doc__ 12408fca5212528e073600c27c70a34eeef445f393bBarry Warsaw if msg: print msg 12508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw sys.exit(code) 12608fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 12708fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 1283b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawdef main(tests=None, testdir=None, verbose=0, quiet=False, generate=False, 1293b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw exclude=False, single=False, randomize=False, fromfile=None, 1300179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro findleaks=False, use_resources=None, trace=False, runleaks=False): 1316fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """Execute a test suite. 1326fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1337e47402264cf87b9bbb61fc9ff610af08add7c7bThomas Wouters This also parses command-line options and modifies its behavior 134004d5e6880940ddbb38460986ac62ee0f1bae97dFred Drake accordingly. 1356fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1366fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum tests -- a list of strings containing test names (optional) 1376fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum testdir -- the directory in which to look for tests (optional) 1386fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1396fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum Users other than the Python test suite will certainly want to 1406fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum specify testdir; if it's omitted, the directory containing the 141004d5e6880940ddbb38460986ac62ee0f1bae97dFred Drake Python test suite is searched for. 1426fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1436fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum If the tests argument is omitted, the tests listed on the 1446fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum command-line will be used. If that's empty, too, then all *.py 1456fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum files beginning with test_ will be used. 146ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaro 1473b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw The other default arguments (verbose, quiet, generate, exclude, single, 1483b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw randomize, findleaks, use_resources, and trace) allow programmers calling 1493b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw main() directly to set the values that would normally be set by flags on 1503b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw the command line. 1516fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """ 152004d5e6880940ddbb38460986ac62ee0f1bae97dFred Drake 1538dee809410e2d433bb0be5d8a1699736b90db0b5Tim Peters test_support.record_original_stdout(sys.stdout) 154152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum try: 1550179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro opts, args = getopt.getopt(sys.argv[1:], 'hvgqxsrf:lu:t:TL', 15608fca5212528e073600c27c70a34eeef445f393bBarry Warsaw ['help', 'verbose', 'quiet', 'generate', 157c5000dfc4098f8547461e790a91536a923124261Tim Peters 'exclude', 'single', 'random', 'fromfile', 1583b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw 'findleaks', 'use=', 'threshold=', 'trace', 1590179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro 'runleaks' 1603b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw ]) 161152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum except getopt.error, msg: 16208fca5212528e073600c27c70a34eeef445f393bBarry Warsaw usage(2, msg) 16308fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 16408fca5212528e073600c27c70a34eeef445f393bBarry Warsaw # Defaults 16508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw if use_resources is None: 16608fca5212528e073600c27c70a34eeef445f393bBarry Warsaw use_resources = [] 167152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum for o, a in opts: 16808fca5212528e073600c27c70a34eeef445f393bBarry Warsaw if o in ('-h', '--help'): 16908fca5212528e073600c27c70a34eeef445f393bBarry Warsaw usage(0) 17008fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-v', '--verbose'): 17108fca5212528e073600c27c70a34eeef445f393bBarry Warsaw verbose += 1 17208fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-q', '--quiet'): 1733b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw quiet = True; 17408fca5212528e073600c27c70a34eeef445f393bBarry Warsaw verbose = 0 17508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-g', '--generate'): 1763b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw generate = True 17708fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-x', '--exclude'): 1783b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw exclude = True 17908fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-s', '--single'): 1803b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw single = True 18108fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-r', '--randomize'): 1823b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw randomize = True 183c5000dfc4098f8547461e790a91536a923124261Tim Peters elif o in ('-f', '--fromfile'): 184c5000dfc4098f8547461e790a91536a923124261Tim Peters fromfile = a 18508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-l', '--findleaks'): 1863b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw findleaks = True 1870179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro elif o in ('-L', '--runleaks'): 1880179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro runleaks = True 1899e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum elif o in ('-t', '--threshold'): 1909e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum import gc 1919e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum gc.set_threshold(int(a)) 1923b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw elif o in ('-T', '--coverage'): 1933b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw trace = True 19408fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-u', '--use'): 195fe3f6969f54cfd3df24f54572a809e0deb47064fGuido van Rossum u = [x.lower() for x in a.split(',')] 196fe3f6969f54cfd3df24f54572a809e0deb47064fGuido van Rossum for r in u: 1973a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake if r == 'all': 1984dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake use_resources[:] = RESOURCE_NAMES 1994dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake continue 2004dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake remove = False 2014dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake if r[0] == '-': 2024dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake remove = True 2034dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake r = r[1:] 2043a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake if r not in RESOURCE_NAMES: 2053a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake usage(1, 'Invalid -u/--use option: ' + a) 2064dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake if remove: 2074dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake if r in use_resources: 2084dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake use_resources.remove(r) 2094dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake elif r not in use_resources: 210e41abab33b0b467acd6bdc7d73ce4b5cef4fd5bfAndrew MacIntyre use_resources.append(r) 211a412220bbf8ef8391eb38b35d62520cfbc2fc039Guido van Rossum if generate and verbose: 21208fca5212528e073600c27c70a34eeef445f393bBarry Warsaw usage(2, "-g and -v don't go together!") 213c5000dfc4098f8547461e790a91536a923124261Tim Peters if single and fromfile: 214c5000dfc4098f8547461e790a91536a923124261Tim Peters usage(2, "-s and -f don't go together!") 21508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 216152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum good = [] 217152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum bad = [] 218152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum skipped = [] 2199a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake resource_denieds = [] 220e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 221d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer if findleaks: 222a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw try: 223a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw import gc 224a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw except ImportError: 2258a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer print 'No GC available, disabling findleaks.' 2263b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw findleaks = False 227a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw else: 2288a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # Uncomment the line below to report garbage that is not 2298a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # freeable by reference counting alone. By default only 2308a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # garbage that is not collectable by the GC is reported. 2318a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer #gc.set_debug(gc.DEBUG_SAVEALL) 232d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer found_garbage = [] 233a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw 234e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if single: 235e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw from tempfile import gettempdir 236e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw filename = os.path.join(gettempdir(), 'pynexttest') 237e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw try: 238e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp = open(filename, 'r') 239fc170b1fd5db978f4e8d4c23c138a7b59df681ecEric S. Raymond next = fp.read().strip() 240e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw tests = [next] 241e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp.close() 242e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw except IOError: 243e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw pass 244c5000dfc4098f8547461e790a91536a923124261Tim Peters 245c5000dfc4098f8547461e790a91536a923124261Tim Peters if fromfile: 246c5000dfc4098f8547461e790a91536a923124261Tim Peters tests = [] 247c5000dfc4098f8547461e790a91536a923124261Tim Peters fp = open(fromfile) 248c5000dfc4098f8547461e790a91536a923124261Tim Peters for line in fp: 249c5000dfc4098f8547461e790a91536a923124261Tim Peters guts = line.split() # assuming no test has whitespace in its name 250c5000dfc4098f8547461e790a91536a923124261Tim Peters if guts and not guts[0].startswith('#'): 251c5000dfc4098f8547461e790a91536a923124261Tim Peters tests.extend(guts) 252c5000dfc4098f8547461e790a91536a923124261Tim Peters fp.close() 253c5000dfc4098f8547461e790a91536a923124261Tim Peters 254c5000dfc4098f8547461e790a91536a923124261Tim Peters # Strip .py extensions. 255c5000dfc4098f8547461e790a91536a923124261Tim Peters if args: 256c5000dfc4098f8547461e790a91536a923124261Tim Peters args = map(removepy, args) 257c5000dfc4098f8547461e790a91536a923124261Tim Peters if tests: 258c5000dfc4098f8547461e790a91536a923124261Tim Peters tests = map(removepy, tests) 259c5000dfc4098f8547461e790a91536a923124261Tim Peters 2606c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum stdtests = STDTESTS[:] 2616c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum nottests = NOTTESTS[:] 262152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if exclude: 2636c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum for arg in args: 2646c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum if arg in stdtests: 2656c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum stdtests.remove(arg) 2666c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum nottests[:0] = args 26741360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum args = [] 268747e1cade657e1e15c0f51d898de901da723e6a2Guido van Rossum tests = tests or args or findtests(testdir, stdtests, nottests) 269e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if single: 270e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw tests = tests[:1] 271ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaro if randomize: 272ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaro random.shuffle(tests) 2733b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if trace: 2743b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw import trace 2753b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix], 2763b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw trace=False, count=True) 2773b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw coverdir = os.path.join(os.getcwd(), 'coverage') 27841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum test_support.verbose = verbose # Tell tests to be moderately quiet 27908fca5212528e073600c27c70a34eeef445f393bBarry Warsaw test_support.use_resources = use_resources 2805796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum save_modules = sys.modules.keys() 281152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum for test in tests: 28241360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if not quiet: 28341360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print test 2843cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 2853b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if trace: 2863b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw # If we're tracing code coverage, then we don't exit with status 2873b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw # if on a false return value from main. 2883b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw tracer.runctx('runtest(test, generate, verbose, quiet, testdir)', 2893b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw globals=globals(), locals=vars()) 29041360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum else: 2913b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw ok = runtest(test, generate, verbose, quiet, testdir) 2923b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if ok > 0: 2933b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw good.append(test) 2943b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw elif ok == 0: 2953b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw bad.append(test) 2963b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw else: 2973b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw skipped.append(test) 2983b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if ok == -2: 2993b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw resource_denieds.append(test) 300d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer if findleaks: 301d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer gc.collect() 302d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer if gc.garbage: 3038a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer print "Warning: test created", len(gc.garbage), 3048a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer print "uncollectable object(s)." 3058a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # move the uncollectable objects somewhere so we don't see 3068a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # them again 307d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer found_garbage.extend(gc.garbage) 308d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer del gc.garbage[:] 3095796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum # Unload the newly imported modules (best effort finalization) 3105796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum for module in sys.modules.keys(): 31151931144427faa001a6db3cfc37380526be256b6Guido van Rossum if module not in save_modules and module.startswith("test."): 3125796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum test_support.unload(module) 3137a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton 3147a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton # The lists won't be sorted if running with -r 3157a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton good.sort() 3167a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton bad.sort() 3177a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton skipped.sort() 318e0c446bb4ad67294f42d4cb53b4ff28413bd8ddeTim Peters 319152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if good and not quiet: 32041360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if not bad and not skipped and len(good) > 1: 32141360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print "All", 32241360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print count(len(good), "test"), "OK." 3231a4d77b2527ced1052b4faae3d176b125a764325Tim Peters if verbose: 324408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw print "CAUTION: stdout isn't compared in verbose mode:" 325408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw print "a test that passes in verbose mode may fail without it." 326152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if bad: 327a45da92484ceececf1cf32b4dfb16004945b001eTim Peters print count(len(bad), "test"), "failed:" 328a45da92484ceececf1cf32b4dfb16004945b001eTim Peters printlist(bad) 329152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if skipped and not quiet: 330a45da92484ceececf1cf32b4dfb16004945b001eTim Peters print count(len(skipped), "test"), "skipped:" 331a45da92484ceececf1cf32b4dfb16004945b001eTim Peters printlist(skipped) 332e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 333b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters e = _ExpectedSkips() 334a2be2d624a47e420266606f0cb2a2e030797f650Tim Peters plat = sys.platform 335b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters if e.isvalid(): 336a690a9967e715663b7a421c9ebdad91381cdf1e4Raymond Hettinger surprise = set(skipped) - e.getexpected() - set(resource_denieds) 337b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters if surprise: 338b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print count(len(surprise), "skip"), \ 339a45da92484ceececf1cf32b4dfb16004945b001eTim Peters "unexpected on", plat + ":" 340a45da92484ceececf1cf32b4dfb16004945b001eTim Peters printlist(surprise) 341b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters else: 342b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print "Those skips are all expected on", plat + "." 343b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters else: 344b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print "Ask someone to teach regrtest.py about which tests are" 345b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print "expected to get skipped on", plat + "." 346b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 347e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if single: 348e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw alltests = findtests(testdir, stdtests, nottests) 349e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw for i in range(len(alltests)): 350e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if tests[0] == alltests[i]: 351e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if i == len(alltests) - 1: 352e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw os.unlink(filename) 353e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw else: 354e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp = open(filename, 'w') 355e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp.write(alltests[i+1] + '\n') 356e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp.close() 357e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw break 358e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw else: 359e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw os.unlink(filename) 360e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 3613b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if trace: 3623b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw r = tracer.results() 3633b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw r.write_results(show_missing=True, summary=True, coverdir=coverdir) 3643b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw 3650179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro if runleaks: 3660179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro os.system("leaks %d" % os.getpid()) 3670179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro 3685943b4ac1067e5011b66697396d5df93b5ef9af0Tim Peters sys.exit(len(bad) > 0) 36908fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 370152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 3716fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van RossumSTDTESTS = [ 372152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_grammar', 373152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_opcodes', 374152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_operations', 375152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_builtin', 376152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_exceptions', 377152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_types', 378152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum ] 379152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 3806fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van RossumNOTTESTS = [ 381152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_support', 38262e2c7e3dfffd8465a54b99fc6d3c2a60acab350Jeremy Hylton 'test_future1', 38362e2c7e3dfffd8465a54b99fc6d3c2a60acab350Jeremy Hylton 'test_future2', 3848471a35febdbfbfab51b9d4b5fe51694fe6ca536Jeremy Hylton 'test_future3', 385152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum ] 386152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 3876fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossumdef findtests(testdir=None, stdtests=STDTESTS, nottests=NOTTESTS): 388152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum """Return a list of all applicable test modules.""" 3896fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum if not testdir: testdir = findtestdir() 390152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum names = os.listdir(testdir) 391152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum tests = [] 392152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum for name in names: 393e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum if name[:5] == "test_" and name[-3:] == os.extsep+"py": 39441360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum modname = name[:-3] 39541360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if modname not in stdtests and modname not in nottests: 39641360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum tests.append(modname) 397152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum tests.sort() 398152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum return stdtests + tests 399152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 4003b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawdef runtest(test, generate, verbose, quiet, testdir=None): 4016fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """Run a single test. 4026fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum test -- the name of the test 4036fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum generate -- if true, generate output, instead of running the test 4046fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum and comparing it to a previously created output file 4056fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum verbose -- if true, print more messages 406f29f47b38beae54db959d0dd2f0800d5dd3fc174Trent Mick quiet -- if true, don't print 'skipped' messages (probably redundant) 4076fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum testdir -- test directory 4086fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """ 409152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum test_support.unload(test) 4103b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if not testdir: 4113b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw testdir = findtestdir() 412152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum outputdir = os.path.join(testdir, "output") 413152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum outputfile = os.path.join(outputdir, test) 4149390cc15da5cd6920bd41bb4cd146d5d0601345fTim Peters if verbose: 41541360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum cfp = None 4160fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum else: 41774e67661a69ddb43a21a486c66965a052540cdd0Raymond Hettinger cfp = cStringIO.StringIO() 418152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum try: 419342ca75d9552ff5c606c465d1392a32e44257fe5Tim Peters save_stdout = sys.stdout 42041360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum try: 42141360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if cfp: 42241360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum sys.stdout = cfp 42341360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print test # Output file starts with test name 424408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw if test.startswith('test.'): 425408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw abstest = test 426408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw else: 427408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # Always import it from the test package 428408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw abstest = 'test.' + test 429408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw the_package = __import__(abstest, globals(), locals(), []) 430408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw the_module = getattr(the_package, test) 431d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # Most tests run to completion simply as a side-effect of 432d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # being imported. For the benefit of tests that can't run 433d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # that way (like test_threaded_import), explicitly invoke 434d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # their test_main() function (if it exists). 435d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters indirect_test = getattr(the_module, "test_main", None) 436d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters if indirect_test is not None: 437d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters indirect_test() 43841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum finally: 439342ca75d9552ff5c606c465d1392a32e44257fe5Tim Peters sys.stdout = save_stdout 4409a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake except test_support.ResourceDenied, msg: 4419a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake if not quiet: 4429a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake print test, "skipped --", msg 4439a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake sys.stdout.flush() 4449a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake return -2 4453af826ebca80f8a6c782fb590c77ac210ae9e22dThomas Wouters except (ImportError, test_support.TestSkipped), msg: 446f29f47b38beae54db959d0dd2f0800d5dd3fc174Trent Mick if not quiet: 447de4742b87f7775fc3d9fa76cd640e7cdd5ef69a2Fred Drake print test, "skipped --", msg 4483cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 44941360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return -1 450fe5c22a85e6740012143cdbdc384bd2ebc788c27Fred Drake except KeyboardInterrupt: 451fe5c22a85e6740012143cdbdc384bd2ebc788c27Fred Drake raise 452152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum except test_support.TestFailed, msg: 45341360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print "test", test, "failed --", msg 4543cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 45541360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return 0 4569e48b272b96aabf597b7aedd358ab890ddbf4c98Guido van Rossum except: 45741360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum type, value = sys.exc_info()[:2] 45827c4b39025eb9e20f9d7a36b6aa0bb9c97f9bba5Fred Drake print "test", test, "crashed --", str(type) + ":", value 4593cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 46041360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if verbose: 46141360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum traceback.print_exc(file=sys.stdout) 4623cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 46341360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return 0 464152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum else: 4650fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum if not cfp: 4660fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 4670fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum output = cfp.getvalue() 468e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake if generate: 469e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake if output == test + "\n": 470e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake if os.path.exists(outputfile): 471e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake # Write it since it already exists (and the contents 472e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake # may have changed), but let the user know it isn't 473e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake # needed: 474e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake print "output file", outputfile, \ 475e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake "is no longer needed; consider removing it" 4760fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum else: 4770fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum # We don't need it, so don't create it. 4780fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 4790fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp = open(outputfile, "w") 4800fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp.write(output) 4810fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp.close() 4820fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 4830fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum if os.path.exists(outputfile): 4840fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp = open(outputfile, "r") 4850fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum expected = fp.read() 4860fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp.close() 4870fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum else: 4880fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum expected = test + "\n" 4890fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum if output == expected: 4900fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 4910fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum print "test", test, "produced unexpected output:" 4923cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 4930fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum reportdiff(expected, output) 4943cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 4950fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 0 4960fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum 4970fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossumdef reportdiff(expected, output): 4980fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum import difflib 499c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "*" * 70 500c377b16d12ba325bb108eca575447d66f19294c0Tim Peters a = expected.splitlines(1) 501c377b16d12ba325bb108eca575447d66f19294c0Tim Peters b = output.splitlines(1) 502cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum sm = difflib.SequenceMatcher(a=a, b=b) 503cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum tuples = sm.get_opcodes() 504c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 505cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum def pair(x0, x1): 506c377b16d12ba325bb108eca575447d66f19294c0Tim Peters # x0:x1 are 0-based slice indices; convert to 1-based line indices. 507cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum x0 += 1 508cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum if x0 >= x1: 509c377b16d12ba325bb108eca575447d66f19294c0Tim Peters return "line " + str(x0) 510cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum else: 511c377b16d12ba325bb108eca575447d66f19294c0Tim Peters return "lines %d-%d" % (x0, x1) 512c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 513cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum for op, a0, a1, b0, b1 in tuples: 514cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum if op == 'equal': 515cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum pass 516c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 517cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum elif op == 'delete': 518c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "***", pair(a0, a1), "of expected output missing:" 519cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum for line in a[a0:a1]: 520c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "-", line, 521c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 522cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum elif op == 'replace': 523c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "*** mismatch between", pair(a0, a1), "of expected", \ 524c377b16d12ba325bb108eca575447d66f19294c0Tim Peters "output and", pair(b0, b1), "of actual output:" 525c377b16d12ba325bb108eca575447d66f19294c0Tim Peters for line in difflib.ndiff(a[a0:a1], b[b0:b1]): 526c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print line, 527c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 528cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum elif op == 'insert': 529c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "***", pair(b0, b1), "of actual output doesn't appear", \ 530c377b16d12ba325bb108eca575447d66f19294c0Tim Peters "in expected output after line", str(a1)+":" 531cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum for line in b[b0:b1]: 532c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "+", line, 533c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 534cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum else: 535cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum print "get_opcodes() returned bad tuple?!?!", (op, a0, a1, b0, b1) 536c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 5370fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum print "*" * 70 538152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 539152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumdef findtestdir(): 540152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if __name__ == '__main__': 54141360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum file = sys.argv[0] 542152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum else: 54341360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum file = __file__ 544152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum testdir = os.path.dirname(file) or os.curdir 545152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum return testdir 546152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 547c5000dfc4098f8547461e790a91536a923124261Tim Petersdef removepy(name): 548c5000dfc4098f8547461e790a91536a923124261Tim Peters if name.endswith(os.extsep + "py"): 549c5000dfc4098f8547461e790a91536a923124261Tim Peters name = name[:-3] 550c5000dfc4098f8547461e790a91536a923124261Tim Peters return name 551c5000dfc4098f8547461e790a91536a923124261Tim Peters 552152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumdef count(n, word): 553152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if n == 1: 55441360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return "%d %s" % (n, word) 555152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum else: 55641360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return "%d %ss" % (n, word) 557152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 558a45da92484ceececf1cf32b4dfb16004945b001eTim Petersdef printlist(x, width=70, indent=4): 5597c7efe90737d4636633127a95a6cab1a55d57cf4Tim Peters """Print the elements of iterable x to stdout. 560a45da92484ceececf1cf32b4dfb16004945b001eTim Peters 561a45da92484ceececf1cf32b4dfb16004945b001eTim Peters Optional arg width (default 70) is the maximum line length. 562a45da92484ceececf1cf32b4dfb16004945b001eTim Peters Optional arg indent (default 4) is the number of blanks with which to 563a45da92484ceececf1cf32b4dfb16004945b001eTim Peters begin each line. 564a45da92484ceececf1cf32b4dfb16004945b001eTim Peters """ 565a45da92484ceececf1cf32b4dfb16004945b001eTim Peters 566ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters from textwrap import fill 567ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters blanks = ' ' * indent 568ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters print fill(' '.join(map(str, x)), width, 569ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters initial_indent=blanks, subsequent_indent=blanks) 570a45da92484ceececf1cf32b4dfb16004945b001eTim Peters 571de14a30d1d70073d36f207fe432e4adad5178399Tim Peters# Map sys.platform to a string containing the basenames of tests 572de14a30d1d70073d36f207fe432e4adad5178399Tim Peters# expected to be skipped on that platform. 5732a182dbf3f2520ad753792068391775d102b13dfTim Peters# 5742a182dbf3f2520ad753792068391775d102b13dfTim Peters# Special cases: 5752a182dbf3f2520ad753792068391775d102b13dfTim Peters# test_pep277 5762a182dbf3f2520ad753792068391775d102b13dfTim Peters# The _ExpectedSkips constructor adds this to the set of expected 5772a182dbf3f2520ad753792068391775d102b13dfTim Peters# skips if not os.path.supports_unicode_filenames. 5781b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters# test_normalization 5791b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters# Whether a skip is expected here depends on whether a large test 5801b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters# input file has been downloaded. test_normalization.skip_expected 5811babdfc48afc60afe5ae708f77dad8a641bf36ecTim Peters# controls that. 582b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters# test_socket_ssl 583b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters# Controlled by test_socket_ssl.skip_expected. Requires the network 584b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters# resource, and a socket module with ssl support. 58555b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz# test_timeout 58655b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz# Controlled by test_timeout.skip_expected. Requires the network 58755b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz# resource and a socket module. 5883e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang# test_codecmaps_* 5893e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang# Whether a skip is expected here depends on whether a large test 5903e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang# input file has been downloaded. test_codecmaps_*.skip_expected 5913e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang# controls that. 592de14a30d1d70073d36f207fe432e4adad5178399Tim Peters 593f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum_expectations = { 594f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum 'win32': 595f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """ 596c7c516aa5140d255f18ffd2e8569434f0904f5dbTim Peters test__locale 597901dc983168d4ca706ed664a8f5134ee3add26edRaymond Hettinger test_applesingle 598f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_al 599823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 60078e35f931128d017d5955841eac8c397ff32595cTim Peters test_bsddb3 601f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cd 602f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cl 603f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_commands 604f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_crypt 605d703057752d52cef6082a920879a0b62cdeffacaTim Peters test_curses 606f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_dbm 607f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_dl 608f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_fcntl 609f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_fork1 610f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_gdbm 611f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_gl 612f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_grp 613f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_imgfile 614fd8e6e599051de07cdb8e9abc9dbadf37c5fca0cTim Peters test_ioctl 615f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_largefile 616f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_linuxaudiodev 617f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_mhlib 618de14a30d1d70073d36f207fe432e4adad5178399Tim Peters test_mpz 619f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_nis 620f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_openpty 621efc4b121694888e00072f5a079de5496afecb05aTim Peters test_ossaudiodev 622f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_poll 623003eb3088283927e3155f2e2317d3d516edd9645Tim Peters test_posix 624f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_pty 625f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_pwd 6261e33ffa5c719ec611e182681c4a5f2ceb62a08f5Tim Peters test_resource 627f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_signal 628f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_sunaudiodev 629f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_timing 630f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """, 631f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum 'linux2': 632f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """ 633f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_al 634944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 635823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 636f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cd 637f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cl 638f66dacdb017c7481c3ba4f0743d5446146de33c8Guido van Rossum test_curses 639f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_dl 640f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_gl 641f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_imgfile 642f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_largefile 6434507ec70cff35468f4b1767382f38ecebd4a29a2Guido van Rossum test_linuxaudiodev 644f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_nis 645f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_ntpath 6464507ec70cff35468f4b1767382f38ecebd4a29a2Guido van Rossum test_ossaudiodev 647f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_sunaudiodev 648f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """, 64949a806edbb298f2a5be3598bd80c21392cb6968dJack Jansen 'mac': 650aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum """ 651aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_al 652679751455798fab6425fda749a19e783e58b210eJack Jansen test_atexit 653aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_bsddb 654823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 655679751455798fab6425fda749a19e783e58b210eJack Jansen test_bsddb3 656679751455798fab6425fda749a19e783e58b210eJack Jansen test_bz2 657aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_cd 658aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_cl 659aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_commands 660aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_crypt 661b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen test_curses 662aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_dbm 663aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_dl 664aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_fcntl 665aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_fork1 666aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_gl 667aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_grp 668c4d6bdd58a58b365556abfe60c9f5b5f73c555f8Jack Jansen test_ioctl 669aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_imgfile 670aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_largefile 671aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_linuxaudiodev 672aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_locale 673aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_mmap 674679751455798fab6425fda749a19e783e58b210eJack Jansen test_mpz 675aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_nis 676aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_ntpath 677aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_openpty 678679751455798fab6425fda749a19e783e58b210eJack Jansen test_ossaudiodev 679aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_poll 680679751455798fab6425fda749a19e783e58b210eJack Jansen test_popen 681aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_popen2 6825bb97e66dcbb110877ac17209c7d2641db6f6006Jack Jansen test_posix 683aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_pty 684aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_pwd 685679751455798fab6425fda749a19e783e58b210eJack Jansen test_resource 686aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_signal 687aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_sunaudiodev 688aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_sundry 689c4d6bdd58a58b365556abfe60c9f5b5f73c555f8Jack Jansen test_tarfile 690aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_timing 691aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum """, 69221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis 'unixware7': 6930ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis """ 6940ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_al 695944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 6960ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_bsddb 697823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 6980ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_cd 6990ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_cl 7000ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_dl 7010ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_gl 7020ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_imgfile 7030ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_largefile 7040ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_linuxaudiodev 7050ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_minidom 7060ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_nis 7070ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_ntpath 7080ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_openpty 7090ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_pyexpat 7100ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_sax 7110ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_sunaudiodev 7120ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_sundry 7130ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis """, 71421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis 'openunix8': 71521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """ 71621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_al 717944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 71821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_bsddb 719823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 72021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cd 72121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cl 72221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_dl 72321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_gl 72421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_imgfile 72521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_largefile 72621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_linuxaudiodev 72721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_minidom 72821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_nis 72921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_ntpath 73021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_openpty 73121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_pyexpat 73221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sax 73321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sunaudiodev 73421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sundry 73521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """, 73621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis 'sco_sv3': 73721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """ 73821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_al 739944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 74021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_asynchat 74121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_bsddb 742823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 74321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cd 74421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cl 74521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_dl 74621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_fork1 74721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_gettext 74821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_gl 74921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_imgfile 75021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_largefile 75121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_linuxaudiodev 75221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_locale 75321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_minidom 75421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_nis 75521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_ntpath 75621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_openpty 75721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_pyexpat 75821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_queue 75921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sax 76021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sunaudiodev 76121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sundry 76221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_thread 76321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_threaded_import 76421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_threadedtempfile 76521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_threading 76621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """, 767e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum 'riscos': 768e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum """ 769e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_al 770944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 771e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_asynchat 772a94568a7535de60f1144e4eea0d027b87017a4b4Martin v. Löwis test_atexit 773e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_bsddb 774823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 775a94568a7535de60f1144e4eea0d027b87017a4b4Martin v. Löwis test_bsddb3 776e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_cd 777e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_cl 778e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_commands 779e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_crypt 780e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_dbm 781e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_dl 782e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_fcntl 783e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_fork1 784e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_gdbm 785e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_gl 786e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_grp 787e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_imgfile 788e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_largefile 789e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_linuxaudiodev 790e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_locale 791e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_mmap 792e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_nis 793e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_ntpath 794e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_openpty 795e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_poll 796e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_popen2 797e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_pty 798e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_pwd 799e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_strop 800e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_sunaudiodev 801e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_sundry 802e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_thread 803e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_threaded_import 804e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_threadedtempfile 805e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_threading 806e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_timing 807e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum """, 8088a97f4a380a7a356730e48406f8269c3efe5e6ebJack Jansen 'darwin': 809398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen """ 8102bfb94c871caeae622174485264f407d9df354b9Brett Cannon test__locale 811398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_al 812acda3394bbfb1db3b22673a80cb2d7e3c68b3da9Jack Jansen test_bsddb 8139d4270070a5d0c3bcd381d52024d811f3b0a0e39Guido van Rossum test_bsddb3 814398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_cd 815398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_cl 816398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_curses 817398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_dl 818398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_gdbm 819398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_gl 820398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_imgfile 821398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_largefile 822398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_linuxaudiodev 823acda3394bbfb1db3b22673a80cb2d7e3c68b3da9Jack Jansen test_locale 824398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_minidom 8259d4270070a5d0c3bcd381d52024d811f3b0a0e39Guido van Rossum test_mpz 826398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_nis 827398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_ntpath 828acda3394bbfb1db3b22673a80cb2d7e3c68b3da9Jack Jansen test_ossaudiodev 829398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_poll 830398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_sunaudiodev 831398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen """, 83211c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum 'sunos5': 83311c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum """ 83411c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_al 835944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 83611c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_bsddb 837823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 83811c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_cd 83911c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_cl 84011c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_curses 84111c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_dbm 84211c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_gdbm 84311c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_gl 84411c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_gzip 84511c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_imgfile 84611c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_linuxaudiodev 84711c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_mpz 84811c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_openpty 84911c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_zipfile 85011c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_zlib 851ed375e18d10d37bfea1769aa1fe69795df6cbc10Jeremy Hylton """, 852b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro 'hp-ux11': 853b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro """ 854b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_al 855944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 856b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_bsddb 857823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 858b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_cd 859b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_cl 860b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_curses 861b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_dl 862b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_gdbm 863b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_gl 864b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_gzip 865b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_imgfile 866b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_largefile 867b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_linuxaudiodev 868b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_locale 869b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_minidom 870b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_nis 871b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_ntpath 872b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_openpty 873b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_pyexpat 874b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_sax 875b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_sunaudiodev 876b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_zipfile 877b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_zlib 878b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro """, 879f90ae20354ceb501f0ba0b6459df17f1a8005a47Martin v. Löwis 'atheos': 880c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters """ 881c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_al 882944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 883823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 884c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_cd 885c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_cl 886c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_curses 887c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_dl 888c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_gdbm 889c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_gl 890c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_imgfile 891c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_largefile 892c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_linuxaudiodev 893c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_locale 894c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_mhlib 895c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_mmap 896c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_mpz 897c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_nis 898c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_poll 899c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_popen2 900c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_resource 901c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_sunaudiodev 902c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters """, 90325115940604e6051aa2fb16be88c6b8f64577251Jason Tishler 'cygwin': 90425115940604e6051aa2fb16be88c6b8f64577251Jason Tishler """ 90525115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_al 906944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 907823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 908b0f89e05ad9aaf229033bbc81be43c1f826e3930Tim Peters test_bsddb3 90925115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_cd 91025115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_cl 91125115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_curses 91225115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_dbm 91325115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_gl 91425115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_imgfile 915c23f39ca9dc540ace879fcf9746254d94293b86fJason Tishler test_ioctl 91625115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_largefile 91725115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_linuxaudiodev 91825115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_locale 91925115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_mpz 92025115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_nis 9215c4ded2c3b59aa134b82ab17cdfe7ab633194ca6Jason Tishler test_ossaudiodev 92225115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_socketserver 92325115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_sunaudiodev 92425115940604e6051aa2fb16be88c6b8f64577251Jason Tishler """, 925fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre 'os2emx': 926fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre """ 927fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_al 928944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 929fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_audioop 930823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 931fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_bsddb3 932fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_cd 933fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_cl 934fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_commands 935fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_curses 936fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_dl 937fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_gl 938fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_imgfile 939fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_largefile 940fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_linuxaudiodev 941fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_mhlib 942fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_mmap 943fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_nis 944fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_openpty 945fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_ossaudiodev 946fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_pty 947fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_resource 948fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_signal 949fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_sunaudiodev 950fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre """, 951944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum 'freebsd4': 952944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum """ 953944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_aepack 954944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_al 955944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 956944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_bsddb 957944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_bsddb3 958944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_cd 959944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_cl 960944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_gl 961944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_imgfile 962944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_linuxaudiodev 963944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_locale 964944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_macfs 965944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_macostools 966944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_nis 967944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_normalization 968944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_ossaudiodev 969944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_pep277 970944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_plistlib 971944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_scriptpackages 972944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_socket_ssl 973944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_socketserver 974944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_sunaudiodev 975944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_timeout 976944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_unicode_file 977944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_urllibnet 978944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_winreg 979944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_winsound 98056f88113b7272be8403f9b722c943e679e23d362Martin v. Löwis """, 981f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum} 98232d0c1b458bbdda8d8895f5b5bedfb4644f839e7Martin v. Löwis_expectations['freebsd5'] = _expectations['freebsd4'] 983f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum 984b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Petersclass _ExpectedSkips: 985b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters def __init__(self): 9862a182dbf3f2520ad753792068391775d102b13dfTim Peters import os.path 9871b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters from test import test_normalization 988b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters from test import test_socket_ssl 98955b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz from test import test_timeout 9903e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang from test import test_codecmaps_cn, test_codecmaps_jp 9913e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang from test import test_codecmaps_kr, test_codecmaps_tw 9925ef601854efbf467c45e2fe2b087833c1916ab54Hye-Shik Chang from test import test_codecmaps_hk 9931b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters 9947c7efe90737d4636633127a95a6cab1a55d57cf4Tim Peters self.valid = False 995de14a30d1d70073d36f207fe432e4adad5178399Tim Peters if sys.platform in _expectations: 996f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum s = _expectations[sys.platform] 997a690a9967e715663b7a421c9ebdad91381cdf1e4Raymond Hettinger self.expected = set(s.split()) 9981b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters 9992a182dbf3f2520ad753792068391775d102b13dfTim Peters if not os.path.supports_unicode_filenames: 10002a182dbf3f2520ad753792068391775d102b13dfTim Peters self.expected.add('test_pep277') 10011b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters 10021b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters if test_normalization.skip_expected: 10031b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters self.expected.add('test_normalization') 10041b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters 1005b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters if test_socket_ssl.skip_expected: 1006b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters self.expected.add('test_socket_ssl') 1007b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters 100855b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz if test_timeout.skip_expected: 100955b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz self.expected.add('test_timeout') 101055b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz 10115ef601854efbf467c45e2fe2b087833c1916ab54Hye-Shik Chang for cc in ('cn', 'jp', 'kr', 'tw', 'hk'): 10123e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang if eval('test_codecmaps_' + cc).skip_expected: 10133e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang self.expected.add('test_codecmaps_' + cc) 10143e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang 10156afc5e02fa775517fa0b6455906a8c203baf9cd2Jack Jansen if not sys.platform in ("mac", "darwin"): 10167035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz MAC_ONLY = ["test_macostools", "test_macfs", "test_aepack", 10177035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz "test_plistlib", "test_scriptpackages"] 10187035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz for skip in MAC_ONLY: 10197035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz self.expected.add(skip) 1020ecd79eb7dbde19ea2adbf2a912caa5b284b477b9Tim Peters 1021ecd79eb7dbde19ea2adbf2a912caa5b284b477b9Tim Peters if sys.platform != "win32": 10227035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz WIN_ONLY = ["test_unicode_file", "test_winreg", 10237035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz "test_winsound"] 10247035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz for skip in WIN_ONLY: 10257035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz self.expected.add(skip) 1026f2715e076435b74638acb81512c2ee014f75aea2Tim Peters 10277c7efe90737d4636633127a95a6cab1a55d57cf4Tim Peters self.valid = True 1028b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1029b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters def isvalid(self): 1030b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters "Return true iff _ExpectedSkips knows about the current platform." 1031b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters return self.valid 1032b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1033b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters def getexpected(self): 1034b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters """Return set of test names we expect to skip on current platform. 1035b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1036b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters self.isvalid() must be true. 1037b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters """ 1038b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1039b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters assert self.isvalid() 1040b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters return self.expected 1041b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1042152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumif __name__ == '__main__': 1043408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # Remove regrtest.py's own directory from the module search path. This 1044408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # prevents relative imports from working, and relative imports will screw 1045408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # up the testing framework. E.g. if both test.test_support and 1046408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # test_support are imported, they will not contain the same globals, and 1047408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # much of the testing framework relies on the globals in the 1048408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # test.test_support module. 1049408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw mydir = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0]))) 1050408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw i = pathlen = len(sys.path) 1051408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw while i >= 0: 1052408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw i -= 1 1053408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw if os.path.abspath(os.path.normpath(sys.path[i])) == mydir: 1054408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw del sys.path[i] 1055408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw if len(sys.path) == pathlen: 1056408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw print 'Could not find %r in sys.path to remove it' % mydir 105708fca5212528e073600c27c70a34eeef445f393bBarry Warsaw main() 1058