regrtest.py revision 0179a18034b2316a70655d0f05bfbb20a0881f17
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 744dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred DrakeTo enable all resources except one, use '-uall,-<resource>'. For 754dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drakeexample, to run all the tests except for the bsddb tests, give the 764dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drakeoption '-uall,-bsddb'. 77152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum""" 78152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 79152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumimport os 803b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawimport sys 81152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumimport getopt 82ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaroimport random 83dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossumimport warnings 843b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawimport cStringIO 853b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawimport traceback 86dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum 87dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum# I see no other way to suppress these warnings; 88dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum# putting them in test_grammar.py has no effect: 8988b1defb6f770c4f74788e8296b88fc31c3936ceGuido van Rossumwarnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, 90dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum ".*test.test_grammar$") 91c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossumif sys.maxint > 0x7fffffff: 92c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum # Also suppress them in <string>, because for 64-bit platforms, 93c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum # that's where test_grammar.py hides them. 94c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, 95c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum "<string>") 96152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 97bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# MacOSX (a.k.a. Darwin) has a default stack size that is too small 98bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# for deeply recursive regular expressions. We see this as crashes in 99bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# the Python test suite when running test_re.py and test_sre.py. The 100bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# fix is to set the stack limit to 2048. 101bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# This approach may also be useful for other Unixy platforms that 102bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# suffer from small default stack limits. 103bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossumif sys.platform == 'darwin': 104bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum try: 105bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum import resource 106bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum except ImportError: 107bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum pass 108bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum else: 109bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum soft, hard = resource.getrlimit(resource.RLIMIT_STACK) 110bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum newsoft = min(hard, max(soft, 1024*2048)) 111bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum resource.setrlimit(resource.RLIMIT_STACK, (newsoft, hard)) 112bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum 11304f357cffef6d764f2f0ff2671dabde75ec250d1Barry Warsawfrom test import test_support 1143a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake 115315aa361fc60d3328aad3a5dcfd42f08213c25fbGuido van RossumRESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network', 'bsddb') 1163a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake 1173a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake 11808fca5212528e073600c27c70a34eeef445f393bBarry Warsawdef usage(code, msg=''): 11908fca5212528e073600c27c70a34eeef445f393bBarry Warsaw print __doc__ 12008fca5212528e073600c27c70a34eeef445f393bBarry Warsaw if msg: print msg 12108fca5212528e073600c27c70a34eeef445f393bBarry Warsaw sys.exit(code) 12208fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 12308fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 1243b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawdef main(tests=None, testdir=None, verbose=0, quiet=False, generate=False, 1253b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw exclude=False, single=False, randomize=False, fromfile=None, 1260179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro findleaks=False, use_resources=None, trace=False, runleaks=False): 1276fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """Execute a test suite. 1286fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1297e47402264cf87b9bbb61fc9ff610af08add7c7bThomas Wouters This also parses command-line options and modifies its behavior 130004d5e6880940ddbb38460986ac62ee0f1bae97dFred Drake accordingly. 1316fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1326fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum tests -- a list of strings containing test names (optional) 1336fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum testdir -- the directory in which to look for tests (optional) 1346fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1356fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum Users other than the Python test suite will certainly want to 1366fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum specify testdir; if it's omitted, the directory containing the 137004d5e6880940ddbb38460986ac62ee0f1bae97dFred Drake Python test suite is searched for. 1386fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1396fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum If the tests argument is omitted, the tests listed on the 1406fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum command-line will be used. If that's empty, too, then all *.py 1416fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum files beginning with test_ will be used. 142ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaro 1433b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw The other default arguments (verbose, quiet, generate, exclude, single, 1443b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw randomize, findleaks, use_resources, and trace) allow programmers calling 1453b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw main() directly to set the values that would normally be set by flags on 1463b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw the command line. 1476fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """ 148004d5e6880940ddbb38460986ac62ee0f1bae97dFred Drake 1498dee809410e2d433bb0be5d8a1699736b90db0b5Tim Peters test_support.record_original_stdout(sys.stdout) 150152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum try: 1510179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro opts, args = getopt.getopt(sys.argv[1:], 'hvgqxsrf:lu:t:TL', 15208fca5212528e073600c27c70a34eeef445f393bBarry Warsaw ['help', 'verbose', 'quiet', 'generate', 153c5000dfc4098f8547461e790a91536a923124261Tim Peters 'exclude', 'single', 'random', 'fromfile', 1543b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw 'findleaks', 'use=', 'threshold=', 'trace', 1550179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro 'runleaks' 1563b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw ]) 157152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum except getopt.error, msg: 15808fca5212528e073600c27c70a34eeef445f393bBarry Warsaw usage(2, msg) 15908fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 16008fca5212528e073600c27c70a34eeef445f393bBarry Warsaw # Defaults 16108fca5212528e073600c27c70a34eeef445f393bBarry Warsaw if use_resources is None: 16208fca5212528e073600c27c70a34eeef445f393bBarry Warsaw use_resources = [] 163152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum for o, a in opts: 16408fca5212528e073600c27c70a34eeef445f393bBarry Warsaw if o in ('-h', '--help'): 16508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw usage(0) 16608fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-v', '--verbose'): 16708fca5212528e073600c27c70a34eeef445f393bBarry Warsaw verbose += 1 16808fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-q', '--quiet'): 1693b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw quiet = True; 17008fca5212528e073600c27c70a34eeef445f393bBarry Warsaw verbose = 0 17108fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-g', '--generate'): 1723b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw generate = True 17308fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-x', '--exclude'): 1743b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw exclude = True 17508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-s', '--single'): 1763b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw single = True 17708fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-r', '--randomize'): 1783b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw randomize = True 179c5000dfc4098f8547461e790a91536a923124261Tim Peters elif o in ('-f', '--fromfile'): 180c5000dfc4098f8547461e790a91536a923124261Tim Peters fromfile = a 18108fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-l', '--findleaks'): 1823b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw findleaks = True 1830179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro elif o in ('-L', '--runleaks'): 1840179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro runleaks = True 1859e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum elif o in ('-t', '--threshold'): 1869e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum import gc 1879e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum gc.set_threshold(int(a)) 1883b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw elif o in ('-T', '--coverage'): 1893b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw trace = True 19008fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-u', '--use'): 191fe3f6969f54cfd3df24f54572a809e0deb47064fGuido van Rossum u = [x.lower() for x in a.split(',')] 192fe3f6969f54cfd3df24f54572a809e0deb47064fGuido van Rossum for r in u: 1933a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake if r == 'all': 1944dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake use_resources[:] = RESOURCE_NAMES 1954dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake continue 1964dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake remove = False 1974dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake if r[0] == '-': 1984dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake remove = True 1994dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake r = r[1:] 2003a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake if r not in RESOURCE_NAMES: 2013a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake usage(1, 'Invalid -u/--use option: ' + a) 2024dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake if remove: 2034dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake if r in use_resources: 2044dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake use_resources.remove(r) 2054dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake elif r not in use_resources: 206e41abab33b0b467acd6bdc7d73ce4b5cef4fd5bfAndrew MacIntyre use_resources.append(r) 207a412220bbf8ef8391eb38b35d62520cfbc2fc039Guido van Rossum if generate and verbose: 20808fca5212528e073600c27c70a34eeef445f393bBarry Warsaw usage(2, "-g and -v don't go together!") 209c5000dfc4098f8547461e790a91536a923124261Tim Peters if single and fromfile: 210c5000dfc4098f8547461e790a91536a923124261Tim Peters usage(2, "-s and -f don't go together!") 21108fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 212152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum good = [] 213152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum bad = [] 214152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum skipped = [] 2159a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake resource_denieds = [] 216e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 217d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer if findleaks: 218a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw try: 219a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw import gc 220a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw except ImportError: 2218a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer print 'No GC available, disabling findleaks.' 2223b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw findleaks = False 223a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw else: 2248a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # Uncomment the line below to report garbage that is not 2258a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # freeable by reference counting alone. By default only 2268a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # garbage that is not collectable by the GC is reported. 2278a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer #gc.set_debug(gc.DEBUG_SAVEALL) 228d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer found_garbage = [] 229a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw 230e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if single: 231e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw from tempfile import gettempdir 232e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw filename = os.path.join(gettempdir(), 'pynexttest') 233e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw try: 234e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp = open(filename, 'r') 235fc170b1fd5db978f4e8d4c23c138a7b59df681ecEric S. Raymond next = fp.read().strip() 236e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw tests = [next] 237e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp.close() 238e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw except IOError: 239e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw pass 240c5000dfc4098f8547461e790a91536a923124261Tim Peters 241c5000dfc4098f8547461e790a91536a923124261Tim Peters if fromfile: 242c5000dfc4098f8547461e790a91536a923124261Tim Peters tests = [] 243c5000dfc4098f8547461e790a91536a923124261Tim Peters fp = open(fromfile) 244c5000dfc4098f8547461e790a91536a923124261Tim Peters for line in fp: 245c5000dfc4098f8547461e790a91536a923124261Tim Peters guts = line.split() # assuming no test has whitespace in its name 246c5000dfc4098f8547461e790a91536a923124261Tim Peters if guts and not guts[0].startswith('#'): 247c5000dfc4098f8547461e790a91536a923124261Tim Peters tests.extend(guts) 248c5000dfc4098f8547461e790a91536a923124261Tim Peters fp.close() 249c5000dfc4098f8547461e790a91536a923124261Tim Peters 250c5000dfc4098f8547461e790a91536a923124261Tim Peters # Strip .py extensions. 251c5000dfc4098f8547461e790a91536a923124261Tim Peters if args: 252c5000dfc4098f8547461e790a91536a923124261Tim Peters args = map(removepy, args) 253c5000dfc4098f8547461e790a91536a923124261Tim Peters if tests: 254c5000dfc4098f8547461e790a91536a923124261Tim Peters tests = map(removepy, tests) 255c5000dfc4098f8547461e790a91536a923124261Tim Peters 2566c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum stdtests = STDTESTS[:] 2576c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum nottests = NOTTESTS[:] 258152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if exclude: 2596c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum for arg in args: 2606c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum if arg in stdtests: 2616c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum stdtests.remove(arg) 2626c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum nottests[:0] = args 26341360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum args = [] 264747e1cade657e1e15c0f51d898de901da723e6a2Guido van Rossum tests = tests or args or findtests(testdir, stdtests, nottests) 265e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if single: 266e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw tests = tests[:1] 267ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaro if randomize: 268ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaro random.shuffle(tests) 2693b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if trace: 2703b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw import trace 2713b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix], 2723b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw trace=False, count=True) 2733b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw coverdir = os.path.join(os.getcwd(), 'coverage') 27441360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum test_support.verbose = verbose # Tell tests to be moderately quiet 27508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw test_support.use_resources = use_resources 2765796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum save_modules = sys.modules.keys() 277152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum for test in tests: 27841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if not quiet: 27941360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print test 2803cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 2813b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if trace: 2823b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw # If we're tracing code coverage, then we don't exit with status 2833b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw # if on a false return value from main. 2843b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw tracer.runctx('runtest(test, generate, verbose, quiet, testdir)', 2853b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw globals=globals(), locals=vars()) 28641360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum else: 2873b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw ok = runtest(test, generate, verbose, quiet, testdir) 2883b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if ok > 0: 2893b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw good.append(test) 2903b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw elif ok == 0: 2913b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw bad.append(test) 2923b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw else: 2933b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw skipped.append(test) 2943b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if ok == -2: 2953b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw resource_denieds.append(test) 296d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer if findleaks: 297d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer gc.collect() 298d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer if gc.garbage: 2998a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer print "Warning: test created", len(gc.garbage), 3008a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer print "uncollectable object(s)." 3018a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # move the uncollectable objects somewhere so we don't see 3028a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # them again 303d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer found_garbage.extend(gc.garbage) 304d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer del gc.garbage[:] 3055796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum # Unload the newly imported modules (best effort finalization) 3065796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum for module in sys.modules.keys(): 30751931144427faa001a6db3cfc37380526be256b6Guido van Rossum if module not in save_modules and module.startswith("test."): 3085796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum test_support.unload(module) 3097a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton 3107a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton # The lists won't be sorted if running with -r 3117a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton good.sort() 3127a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton bad.sort() 3137a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton skipped.sort() 314e0c446bb4ad67294f42d4cb53b4ff28413bd8ddeTim Peters 315152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if good and not quiet: 31641360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if not bad and not skipped and len(good) > 1: 31741360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print "All", 31841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print count(len(good), "test"), "OK." 3191a4d77b2527ced1052b4faae3d176b125a764325Tim Peters if verbose: 320408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw print "CAUTION: stdout isn't compared in verbose mode:" 321408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw print "a test that passes in verbose mode may fail without it." 322152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if bad: 323a45da92484ceececf1cf32b4dfb16004945b001eTim Peters print count(len(bad), "test"), "failed:" 324a45da92484ceececf1cf32b4dfb16004945b001eTim Peters printlist(bad) 325152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if skipped and not quiet: 326a45da92484ceececf1cf32b4dfb16004945b001eTim Peters print count(len(skipped), "test"), "skipped:" 327a45da92484ceececf1cf32b4dfb16004945b001eTim Peters printlist(skipped) 328e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 329b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters e = _ExpectedSkips() 330a2be2d624a47e420266606f0cb2a2e030797f650Tim Peters plat = sys.platform 331b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters if e.isvalid(): 332a690a9967e715663b7a421c9ebdad91381cdf1e4Raymond Hettinger surprise = set(skipped) - e.getexpected() - set(resource_denieds) 333b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters if surprise: 334b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print count(len(surprise), "skip"), \ 335a45da92484ceececf1cf32b4dfb16004945b001eTim Peters "unexpected on", plat + ":" 336a45da92484ceececf1cf32b4dfb16004945b001eTim Peters printlist(surprise) 337b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters else: 338b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print "Those skips are all expected on", plat + "." 339b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters else: 340b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print "Ask someone to teach regrtest.py about which tests are" 341b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print "expected to get skipped on", plat + "." 342b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 343e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if single: 344e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw alltests = findtests(testdir, stdtests, nottests) 345e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw for i in range(len(alltests)): 346e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if tests[0] == alltests[i]: 347e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if i == len(alltests) - 1: 348e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw os.unlink(filename) 349e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw else: 350e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp = open(filename, 'w') 351e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp.write(alltests[i+1] + '\n') 352e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp.close() 353e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw break 354e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw else: 355e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw os.unlink(filename) 356e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 3573b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if trace: 3583b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw r = tracer.results() 3593b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw r.write_results(show_missing=True, summary=True, coverdir=coverdir) 3603b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw 3610179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro if runleaks: 3620179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro os.system("leaks %d" % os.getpid()) 3630179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro 3645943b4ac1067e5011b66697396d5df93b5ef9af0Tim Peters sys.exit(len(bad) > 0) 36508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 366152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 3676fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van RossumSTDTESTS = [ 368152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_grammar', 369152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_opcodes', 370152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_operations', 371152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_builtin', 372152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_exceptions', 373152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_types', 374152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum ] 375152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 3766fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van RossumNOTTESTS = [ 377152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_support', 37862e2c7e3dfffd8465a54b99fc6d3c2a60acab350Jeremy Hylton 'test_future1', 37962e2c7e3dfffd8465a54b99fc6d3c2a60acab350Jeremy Hylton 'test_future2', 3808471a35febdbfbfab51b9d4b5fe51694fe6ca536Jeremy Hylton 'test_future3', 381152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum ] 382152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 3836fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossumdef findtests(testdir=None, stdtests=STDTESTS, nottests=NOTTESTS): 384152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum """Return a list of all applicable test modules.""" 3856fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum if not testdir: testdir = findtestdir() 386152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum names = os.listdir(testdir) 387152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum tests = [] 388152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum for name in names: 389e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum if name[:5] == "test_" and name[-3:] == os.extsep+"py": 39041360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum modname = name[:-3] 39141360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if modname not in stdtests and modname not in nottests: 39241360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum tests.append(modname) 393152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum tests.sort() 394152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum return stdtests + tests 395152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 3963b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawdef runtest(test, generate, verbose, quiet, testdir=None): 3976fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """Run a single test. 3986fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum test -- the name of the test 3996fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum generate -- if true, generate output, instead of running the test 4006fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum and comparing it to a previously created output file 4016fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum verbose -- if true, print more messages 402f29f47b38beae54db959d0dd2f0800d5dd3fc174Trent Mick quiet -- if true, don't print 'skipped' messages (probably redundant) 4036fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum testdir -- test directory 4046fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """ 405152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum test_support.unload(test) 4063b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if not testdir: 4073b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw testdir = findtestdir() 408152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum outputdir = os.path.join(testdir, "output") 409152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum outputfile = os.path.join(outputdir, test) 4109390cc15da5cd6920bd41bb4cd146d5d0601345fTim Peters if verbose: 41141360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum cfp = None 4120fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum else: 41374e67661a69ddb43a21a486c66965a052540cdd0Raymond Hettinger cfp = cStringIO.StringIO() 414152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum try: 415342ca75d9552ff5c606c465d1392a32e44257fe5Tim Peters save_stdout = sys.stdout 41641360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum try: 41741360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if cfp: 41841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum sys.stdout = cfp 41941360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print test # Output file starts with test name 420408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw if test.startswith('test.'): 421408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw abstest = test 422408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw else: 423408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # Always import it from the test package 424408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw abstest = 'test.' + test 425408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw the_package = __import__(abstest, globals(), locals(), []) 426408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw the_module = getattr(the_package, test) 427d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # Most tests run to completion simply as a side-effect of 428d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # being imported. For the benefit of tests that can't run 429d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # that way (like test_threaded_import), explicitly invoke 430d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # their test_main() function (if it exists). 431d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters indirect_test = getattr(the_module, "test_main", None) 432d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters if indirect_test is not None: 433d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters indirect_test() 43441360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum finally: 435342ca75d9552ff5c606c465d1392a32e44257fe5Tim Peters sys.stdout = save_stdout 4369a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake except test_support.ResourceDenied, msg: 4379a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake if not quiet: 4389a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake print test, "skipped --", msg 4399a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake sys.stdout.flush() 4409a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake return -2 4413af826ebca80f8a6c782fb590c77ac210ae9e22dThomas Wouters except (ImportError, test_support.TestSkipped), msg: 442f29f47b38beae54db959d0dd2f0800d5dd3fc174Trent Mick if not quiet: 443de4742b87f7775fc3d9fa76cd640e7cdd5ef69a2Fred Drake print test, "skipped --", msg 4443cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 44541360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return -1 446fe5c22a85e6740012143cdbdc384bd2ebc788c27Fred Drake except KeyboardInterrupt: 447fe5c22a85e6740012143cdbdc384bd2ebc788c27Fred Drake raise 448152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum except test_support.TestFailed, msg: 44941360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print "test", test, "failed --", msg 4503cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 45141360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return 0 4529e48b272b96aabf597b7aedd358ab890ddbf4c98Guido van Rossum except: 45341360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum type, value = sys.exc_info()[:2] 45427c4b39025eb9e20f9d7a36b6aa0bb9c97f9bba5Fred Drake print "test", test, "crashed --", str(type) + ":", value 4553cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 45641360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if verbose: 45741360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum traceback.print_exc(file=sys.stdout) 4583cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 45941360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return 0 460152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum else: 4610fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum if not cfp: 4620fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 4630fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum output = cfp.getvalue() 464e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake if generate: 465e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake if output == test + "\n": 466e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake if os.path.exists(outputfile): 467e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake # Write it since it already exists (and the contents 468e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake # may have changed), but let the user know it isn't 469e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake # needed: 470e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake print "output file", outputfile, \ 471e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake "is no longer needed; consider removing it" 4720fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum else: 4730fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum # We don't need it, so don't create it. 4740fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 4750fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp = open(outputfile, "w") 4760fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp.write(output) 4770fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp.close() 4780fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 4790fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum if os.path.exists(outputfile): 4800fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp = open(outputfile, "r") 4810fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum expected = fp.read() 4820fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp.close() 4830fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum else: 4840fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum expected = test + "\n" 4850fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum if output == expected: 4860fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 4870fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum print "test", test, "produced unexpected output:" 4883cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 4890fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum reportdiff(expected, output) 4903cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 4910fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 0 4920fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum 4930fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossumdef reportdiff(expected, output): 4940fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum import difflib 495c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "*" * 70 496c377b16d12ba325bb108eca575447d66f19294c0Tim Peters a = expected.splitlines(1) 497c377b16d12ba325bb108eca575447d66f19294c0Tim Peters b = output.splitlines(1) 498cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum sm = difflib.SequenceMatcher(a=a, b=b) 499cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum tuples = sm.get_opcodes() 500c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 501cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum def pair(x0, x1): 502c377b16d12ba325bb108eca575447d66f19294c0Tim Peters # x0:x1 are 0-based slice indices; convert to 1-based line indices. 503cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum x0 += 1 504cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum if x0 >= x1: 505c377b16d12ba325bb108eca575447d66f19294c0Tim Peters return "line " + str(x0) 506cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum else: 507c377b16d12ba325bb108eca575447d66f19294c0Tim Peters return "lines %d-%d" % (x0, x1) 508c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 509cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum for op, a0, a1, b0, b1 in tuples: 510cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum if op == 'equal': 511cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum pass 512c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 513cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum elif op == 'delete': 514c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "***", pair(a0, a1), "of expected output missing:" 515cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum for line in a[a0:a1]: 516c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "-", line, 517c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 518cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum elif op == 'replace': 519c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "*** mismatch between", pair(a0, a1), "of expected", \ 520c377b16d12ba325bb108eca575447d66f19294c0Tim Peters "output and", pair(b0, b1), "of actual output:" 521c377b16d12ba325bb108eca575447d66f19294c0Tim Peters for line in difflib.ndiff(a[a0:a1], b[b0:b1]): 522c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print line, 523c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 524cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum elif op == 'insert': 525c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "***", pair(b0, b1), "of actual output doesn't appear", \ 526c377b16d12ba325bb108eca575447d66f19294c0Tim Peters "in expected output after line", str(a1)+":" 527cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum for line in b[b0:b1]: 528c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "+", line, 529c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 530cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum else: 531cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum print "get_opcodes() returned bad tuple?!?!", (op, a0, a1, b0, b1) 532c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 5330fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum print "*" * 70 534152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 535152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumdef findtestdir(): 536152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if __name__ == '__main__': 53741360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum file = sys.argv[0] 538152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum else: 53941360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum file = __file__ 540152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum testdir = os.path.dirname(file) or os.curdir 541152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum return testdir 542152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 543c5000dfc4098f8547461e790a91536a923124261Tim Petersdef removepy(name): 544c5000dfc4098f8547461e790a91536a923124261Tim Peters if name.endswith(os.extsep + "py"): 545c5000dfc4098f8547461e790a91536a923124261Tim Peters name = name[:-3] 546c5000dfc4098f8547461e790a91536a923124261Tim Peters return name 547c5000dfc4098f8547461e790a91536a923124261Tim Peters 548152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumdef count(n, word): 549152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if n == 1: 55041360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return "%d %s" % (n, word) 551152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum else: 55241360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return "%d %ss" % (n, word) 553152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 554a45da92484ceececf1cf32b4dfb16004945b001eTim Petersdef printlist(x, width=70, indent=4): 5557c7efe90737d4636633127a95a6cab1a55d57cf4Tim Peters """Print the elements of iterable x to stdout. 556a45da92484ceececf1cf32b4dfb16004945b001eTim Peters 557a45da92484ceececf1cf32b4dfb16004945b001eTim Peters Optional arg width (default 70) is the maximum line length. 558a45da92484ceececf1cf32b4dfb16004945b001eTim Peters Optional arg indent (default 4) is the number of blanks with which to 559a45da92484ceececf1cf32b4dfb16004945b001eTim Peters begin each line. 560a45da92484ceececf1cf32b4dfb16004945b001eTim Peters """ 561a45da92484ceececf1cf32b4dfb16004945b001eTim Peters 562ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters from textwrap import fill 563ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters blanks = ' ' * indent 564ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters print fill(' '.join(map(str, x)), width, 565ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters initial_indent=blanks, subsequent_indent=blanks) 566a45da92484ceececf1cf32b4dfb16004945b001eTim Peters 567de14a30d1d70073d36f207fe432e4adad5178399Tim Peters# Map sys.platform to a string containing the basenames of tests 568de14a30d1d70073d36f207fe432e4adad5178399Tim Peters# expected to be skipped on that platform. 5692a182dbf3f2520ad753792068391775d102b13dfTim Peters# 5702a182dbf3f2520ad753792068391775d102b13dfTim Peters# Special cases: 5712a182dbf3f2520ad753792068391775d102b13dfTim Peters# test_pep277 5722a182dbf3f2520ad753792068391775d102b13dfTim Peters# The _ExpectedSkips constructor adds this to the set of expected 5732a182dbf3f2520ad753792068391775d102b13dfTim Peters# skips if not os.path.supports_unicode_filenames. 5741b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters# test_normalization 5751b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters# Whether a skip is expected here depends on whether a large test 5761b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters# input file has been downloaded. test_normalization.skip_expected 5771babdfc48afc60afe5ae708f77dad8a641bf36ecTim Peters# controls that. 578b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters# test_socket_ssl 579b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters# Controlled by test_socket_ssl.skip_expected. Requires the network 580b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters# resource, and a socket module with ssl support. 58155b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz# test_timeout 58255b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz# Controlled by test_timeout.skip_expected. Requires the network 58355b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz# resource and a socket module. 5843e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang# test_codecmaps_* 5853e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang# Whether a skip is expected here depends on whether a large test 5863e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang# input file has been downloaded. test_codecmaps_*.skip_expected 5873e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang# controls that. 588de14a30d1d70073d36f207fe432e4adad5178399Tim Peters 589f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum_expectations = { 590f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum 'win32': 591f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """ 592c7c516aa5140d255f18ffd2e8569434f0904f5dbTim Peters test__locale 593901dc983168d4ca706ed664a8f5134ee3add26edRaymond Hettinger test_applesingle 594f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_al 595823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 59678e35f931128d017d5955841eac8c397ff32595cTim Peters test_bsddb3 597f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cd 598f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cl 599f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_commands 600f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_crypt 601d703057752d52cef6082a920879a0b62cdeffacaTim Peters test_curses 602f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_dbm 603f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_dl 604f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_fcntl 605f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_fork1 606f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_gdbm 607f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_gl 608f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_grp 609f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_imgfile 610fd8e6e599051de07cdb8e9abc9dbadf37c5fca0cTim Peters test_ioctl 611f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_largefile 612f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_linuxaudiodev 613f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_mhlib 614de14a30d1d70073d36f207fe432e4adad5178399Tim Peters test_mpz 615f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_nis 616f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_openpty 617efc4b121694888e00072f5a079de5496afecb05aTim Peters test_ossaudiodev 618f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_poll 619003eb3088283927e3155f2e2317d3d516edd9645Tim Peters test_posix 620f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_pty 621f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_pwd 6221e33ffa5c719ec611e182681c4a5f2ceb62a08f5Tim Peters test_resource 623f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_signal 624f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_sunaudiodev 625f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_timing 626f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """, 627f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum 'linux2': 628f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """ 629f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_al 630944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 631823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 632f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cd 633f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cl 634f66dacdb017c7481c3ba4f0743d5446146de33c8Guido van Rossum test_curses 635f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_dl 636f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_gl 637f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_imgfile 638f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_largefile 6394507ec70cff35468f4b1767382f38ecebd4a29a2Guido van Rossum test_linuxaudiodev 640f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_nis 641f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_ntpath 6424507ec70cff35468f4b1767382f38ecebd4a29a2Guido van Rossum test_ossaudiodev 643f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_sunaudiodev 644f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """, 64549a806edbb298f2a5be3598bd80c21392cb6968dJack Jansen 'mac': 646aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum """ 647aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_al 648679751455798fab6425fda749a19e783e58b210eJack Jansen test_atexit 649aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_bsddb 650823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 651679751455798fab6425fda749a19e783e58b210eJack Jansen test_bsddb3 652679751455798fab6425fda749a19e783e58b210eJack Jansen test_bz2 653aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_cd 654aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_cl 655aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_commands 656aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_crypt 657b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen test_curses 658aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_dbm 659aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_dl 660aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_fcntl 661aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_fork1 662aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_gl 663aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_grp 664c4d6bdd58a58b365556abfe60c9f5b5f73c555f8Jack Jansen test_ioctl 665aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_imgfile 666aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_largefile 667aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_linuxaudiodev 668aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_locale 669aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_mmap 670679751455798fab6425fda749a19e783e58b210eJack Jansen test_mpz 671aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_nis 672aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_ntpath 673aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_openpty 674679751455798fab6425fda749a19e783e58b210eJack Jansen test_ossaudiodev 675aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_poll 676679751455798fab6425fda749a19e783e58b210eJack Jansen test_popen 677aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_popen2 6785bb97e66dcbb110877ac17209c7d2641db6f6006Jack Jansen test_posix 679aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_pty 680aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_pwd 681679751455798fab6425fda749a19e783e58b210eJack Jansen test_resource 682aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_signal 683aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_sunaudiodev 684aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_sundry 685c4d6bdd58a58b365556abfe60c9f5b5f73c555f8Jack Jansen test_tarfile 686aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_timing 687aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum """, 68821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis 'unixware7': 6890ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis """ 6900ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_al 691944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 6920ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_bsddb 693823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 6940ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_cd 6950ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_cl 6960ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_dl 6970ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_gl 6980ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_imgfile 6990ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_largefile 7000ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_linuxaudiodev 7010ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_minidom 7020ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_nis 7030ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_ntpath 7040ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_openpty 7050ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_pyexpat 7060ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_sax 7070ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_sunaudiodev 7080ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_sundry 7090ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis """, 71021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis 'openunix8': 71121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """ 71221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_al 713944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 71421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_bsddb 715823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 71621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cd 71721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cl 71821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_dl 71921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_gl 72021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_imgfile 72121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_largefile 72221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_linuxaudiodev 72321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_minidom 72421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_nis 72521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_ntpath 72621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_openpty 72721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_pyexpat 72821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sax 72921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sunaudiodev 73021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sundry 73121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """, 73221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis 'sco_sv3': 73321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """ 73421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_al 735944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 73621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_asynchat 73721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_bsddb 738823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 73921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cd 74021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cl 74121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_dl 74221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_fork1 74321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_gettext 74421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_gl 74521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_imgfile 74621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_largefile 74721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_linuxaudiodev 74821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_locale 74921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_minidom 75021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_nis 75121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_ntpath 75221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_openpty 75321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_pyexpat 75421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_queue 75521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sax 75621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sunaudiodev 75721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sundry 75821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_thread 75921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_threaded_import 76021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_threadedtempfile 76121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_threading 76221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """, 763e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum 'riscos': 764e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum """ 765e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_al 766944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 767e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_asynchat 768a94568a7535de60f1144e4eea0d027b87017a4b4Martin v. Löwis test_atexit 769e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_bsddb 770823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 771a94568a7535de60f1144e4eea0d027b87017a4b4Martin v. Löwis test_bsddb3 772e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_cd 773e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_cl 774e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_commands 775e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_crypt 776e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_dbm 777e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_dl 778e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_fcntl 779e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_fork1 780e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_gdbm 781e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_gl 782e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_grp 783e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_imgfile 784e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_largefile 785e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_linuxaudiodev 786e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_locale 787e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_mmap 788e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_nis 789e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_ntpath 790e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_openpty 791e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_poll 792e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_popen2 793e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_pty 794e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_pwd 795e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_strop 796e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_sunaudiodev 797e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_sundry 798e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_thread 799e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_threaded_import 800e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_threadedtempfile 801e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_threading 802e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_timing 803e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum """, 8048a97f4a380a7a356730e48406f8269c3efe5e6ebJack Jansen 'darwin': 805398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen """ 8062bfb94c871caeae622174485264f407d9df354b9Brett Cannon test__locale 807398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_al 808acda3394bbfb1db3b22673a80cb2d7e3c68b3da9Jack Jansen test_bsddb 8099d4270070a5d0c3bcd381d52024d811f3b0a0e39Guido van Rossum test_bsddb3 810398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_cd 811398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_cl 812398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_curses 813398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_dl 814398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_gdbm 815398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_gl 816398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_imgfile 817398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_largefile 818398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_linuxaudiodev 819acda3394bbfb1db3b22673a80cb2d7e3c68b3da9Jack Jansen test_locale 820398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_minidom 8219d4270070a5d0c3bcd381d52024d811f3b0a0e39Guido van Rossum test_mpz 822398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_nis 823398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_ntpath 824acda3394bbfb1db3b22673a80cb2d7e3c68b3da9Jack Jansen test_ossaudiodev 825398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_poll 826398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_sunaudiodev 827398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen """, 82811c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum 'sunos5': 82911c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum """ 83011c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_al 831944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 83211c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_bsddb 833823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 83411c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_cd 83511c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_cl 83611c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_curses 83711c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_dbm 83811c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_gdbm 83911c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_gl 84011c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_gzip 84111c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_imgfile 84211c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_linuxaudiodev 84311c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_mpz 84411c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_openpty 84511c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_zipfile 84611c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_zlib 847ed375e18d10d37bfea1769aa1fe69795df6cbc10Jeremy Hylton """, 848b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro 'hp-ux11': 849b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro """ 850b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_al 851944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 852b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_bsddb 853823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 854b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_cd 855b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_cl 856b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_curses 857b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_dl 858b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_gdbm 859b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_gl 860b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_gzip 861b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_imgfile 862b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_largefile 863b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_linuxaudiodev 864b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_locale 865b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_minidom 866b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_nis 867b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_ntpath 868b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_openpty 869b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_pyexpat 870b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_sax 871b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_sunaudiodev 872b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_zipfile 873b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_zlib 874b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro """, 875f90ae20354ceb501f0ba0b6459df17f1a8005a47Martin v. Löwis 'atheos': 876c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters """ 877c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_al 878944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 879823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 880c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_cd 881c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_cl 882c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_curses 883c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_dl 884c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_gdbm 885c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_gl 886c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_imgfile 887c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_largefile 888c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_linuxaudiodev 889c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_locale 890c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_mhlib 891c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_mmap 892c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_mpz 893c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_nis 894c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_poll 895c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_popen2 896c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_resource 897c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_sunaudiodev 898c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters """, 89925115940604e6051aa2fb16be88c6b8f64577251Jason Tishler 'cygwin': 90025115940604e6051aa2fb16be88c6b8f64577251Jason Tishler """ 90125115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_al 902944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 903823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 904b0f89e05ad9aaf229033bbc81be43c1f826e3930Tim Peters test_bsddb3 90525115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_cd 90625115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_cl 90725115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_curses 90825115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_dbm 90925115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_gl 91025115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_imgfile 911c23f39ca9dc540ace879fcf9746254d94293b86fJason Tishler test_ioctl 91225115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_largefile 91325115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_linuxaudiodev 91425115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_locale 91525115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_mpz 91625115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_nis 9175c4ded2c3b59aa134b82ab17cdfe7ab633194ca6Jason Tishler test_ossaudiodev 91825115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_socketserver 91925115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_sunaudiodev 92025115940604e6051aa2fb16be88c6b8f64577251Jason Tishler """, 921fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre 'os2emx': 922fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre """ 923fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_al 924944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 925fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_audioop 926823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 927fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_bsddb3 928fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_cd 929fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_cl 930fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_commands 931fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_curses 932fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_dl 933fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_gl 934fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_imgfile 935fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_largefile 936fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_linuxaudiodev 937fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_mhlib 938fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_mmap 939fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_nis 940fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_openpty 941fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_ossaudiodev 942fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_pty 943fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_resource 944fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_signal 945fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_sunaudiodev 946fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre """, 947944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum 'freebsd4': 948944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum """ 949944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_aepack 950944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_al 951944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 952944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_bsddb 953944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_bsddb3 954944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_cd 955944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_cl 956944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_gl 957944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_imgfile 958944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_linuxaudiodev 959944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_locale 960944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_macfs 961944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_macostools 962944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_nis 963944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_normalization 964944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_ossaudiodev 965944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_pep277 966944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_plistlib 967944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_scriptpackages 968944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_socket_ssl 969944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_socketserver 970944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_sunaudiodev 971944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_timeout 972944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_unicode_file 973944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_urllibnet 974944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_winreg 975944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_winsound 97656f88113b7272be8403f9b722c943e679e23d362Martin v. Löwis """, 977f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum} 978f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum 979b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Petersclass _ExpectedSkips: 980b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters def __init__(self): 9812a182dbf3f2520ad753792068391775d102b13dfTim Peters import os.path 9821b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters from test import test_normalization 983b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters from test import test_socket_ssl 98455b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz from test import test_timeout 9853e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang from test import test_codecmaps_cn, test_codecmaps_jp 9863e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang from test import test_codecmaps_kr, test_codecmaps_tw 9871b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters 9887c7efe90737d4636633127a95a6cab1a55d57cf4Tim Peters self.valid = False 989de14a30d1d70073d36f207fe432e4adad5178399Tim Peters if sys.platform in _expectations: 990f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum s = _expectations[sys.platform] 991a690a9967e715663b7a421c9ebdad91381cdf1e4Raymond Hettinger self.expected = set(s.split()) 9921b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters 9932a182dbf3f2520ad753792068391775d102b13dfTim Peters if not os.path.supports_unicode_filenames: 9942a182dbf3f2520ad753792068391775d102b13dfTim Peters self.expected.add('test_pep277') 9951b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters 9961b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters if test_normalization.skip_expected: 9971b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters self.expected.add('test_normalization') 9981b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters 999b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters if test_socket_ssl.skip_expected: 1000b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters self.expected.add('test_socket_ssl') 1001b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters 100255b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz if test_timeout.skip_expected: 100355b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz self.expected.add('test_timeout') 100455b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz 10053e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang for cc in ('cn', 'jp', 'kr', 'tw'): 10063e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang if eval('test_codecmaps_' + cc).skip_expected: 10073e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang self.expected.add('test_codecmaps_' + cc) 10083e2a30692085d32ac63f72b35da39158a471fc68Hye-Shik Chang 10096afc5e02fa775517fa0b6455906a8c203baf9cd2Jack Jansen if not sys.platform in ("mac", "darwin"): 10107035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz MAC_ONLY = ["test_macostools", "test_macfs", "test_aepack", 10117035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz "test_plistlib", "test_scriptpackages"] 10127035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz for skip in MAC_ONLY: 10137035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz self.expected.add(skip) 1014ecd79eb7dbde19ea2adbf2a912caa5b284b477b9Tim Peters 1015ecd79eb7dbde19ea2adbf2a912caa5b284b477b9Tim Peters if sys.platform != "win32": 10167035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz WIN_ONLY = ["test_unicode_file", "test_winreg", 10177035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz "test_winsound"] 10187035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz for skip in WIN_ONLY: 10197035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz self.expected.add(skip) 1020f2715e076435b74638acb81512c2ee014f75aea2Tim Peters 10217c7efe90737d4636633127a95a6cab1a55d57cf4Tim Peters self.valid = True 1022b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1023b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters def isvalid(self): 1024b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters "Return true iff _ExpectedSkips knows about the current platform." 1025b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters return self.valid 1026b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1027b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters def getexpected(self): 1028b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters """Return set of test names we expect to skip on current platform. 1029b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1030b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters self.isvalid() must be true. 1031b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters """ 1032b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1033b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters assert self.isvalid() 1034b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters return self.expected 1035b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1036152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumif __name__ == '__main__': 1037408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # Remove regrtest.py's own directory from the module search path. This 1038408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # prevents relative imports from working, and relative imports will screw 1039408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # up the testing framework. E.g. if both test.test_support and 1040408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # test_support are imported, they will not contain the same globals, and 1041408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # much of the testing framework relies on the globals in the 1042408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # test.test_support module. 1043408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw mydir = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0]))) 1044408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw i = pathlen = len(sys.path) 1045408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw while i >= 0: 1046408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw i -= 1 1047408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw if os.path.abspath(os.path.normpath(sys.path[i])) == mydir: 1048408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw del sys.path[i] 1049408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw if len(sys.path) == pathlen: 1050408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw print 'Could not find %r in sys.path to remove it' % mydir 105108fca5212528e073600c27c70a34eeef445f393bBarry Warsaw main() 1052