regrtest.py revision 922dd7d49da75b07e27f917db0166f67bdbef3d3
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 1161147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-v: verbose -- run tests in verbose mode with output to stdout 1204824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis-w: verbose2 -- re-run failed tests in verbose mode 1361147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-q: quiet -- don't print anything except if a test fails 1461147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-g: generate -- write the output file for a test instead of comparing it 1561147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-x: exclude -- arguments are tests to *exclude* 1661147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-s: single -- run only a single test (see below) 1761147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-r: random -- randomize test execution order 1861147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-f: fromfile -- read names of tests to run from a file (see below) 1961147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-l: findleaks -- if GC is available detect tests that leak memory 2061147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-u: use -- specify which special resource intensive tests to run 2161147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-h: help -- print this text and exit 2261147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-t: threshold -- call gc.set_threshold(N) 2361147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-T: coverage -- turn on code coverage using the trace module 24aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald-D: coverdir -- Directory where coverage files are put 25aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald-N: nocoverdir -- Put coverage files alongside modules 2661147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-L: runleaks -- run the leaks(1) command just before exit 2761147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-R: huntrleaks -- search for reference leaks (needs debug build, v. slow) 28152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 29152494aea24669a3d74460fa460a4ed45696bc75Guido van RossumIf non-option arguments are present, they are names for tests to run, 30152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumunless -x is given, in which case they are names for tests not to run. 31152494aea24669a3d74460fa460a4ed45696bc75Guido van RossumIf no test names are given, all tests are run. 32f58ed2596706b97c16174a839c1ed6f6b1f87fa6Guido van Rossum 33a412220bbf8ef8391eb38b35d62520cfbc2fc039Guido van Rossum-v is incompatible with -g and does not compare test output files. 34e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 353b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw-T turns on code coverage tracing with the trace module. 363b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw 37aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald-D specifies the directory where coverage files are put. 38aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald 39aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald-N Put coverage files alongside modules. 40aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald 419e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum-s means to run only a single test and exit. This is useful when 429e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumdoing memory analysis on the Python interpreter (which tend to consume 439e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumtoo many resources to run the full regression test non-stop). The 449e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumfile /tmp/pynexttest is read to find the next test to run. If this 459e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumfile is missing, the first test_*.py file in testdir or on the command 469e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumline is used. (actually tempfile.gettempdir() is used instead of 479e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum/tmp). 48e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 499e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum-f reads the names of tests from the file given as f's argument, one 509e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumor more test names per line. Whitespace is ignored. Blank lines and 519e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumlines beginning with '#' are ignored. This is especially useful for 529e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumwhittling down failures involving interactions among tests. 53c5000dfc4098f8547461e790a91536a923124261Tim Peters 540179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro-L causes the leaks(1) command to be run just before exit if it exists. 550179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaroleaks(1) is available on Mac OS X and presumably on some other 560179a18034b2316a70655d0f05bfbb20a0881f17Skip MontanaroFreeBSD-derived systems. 570179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro 5861147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson-R runs each test several times and examines sys.gettotalrefcount() to 5961147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudsonsee if the test appears to be leaking references. The argument should 6061147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudsonbe of the form stab:run:fname where 'stab' is the number of times the 6161147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudsontest is run to let gettotalrefcount settle down, 'run' is the number 6261147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudsonof times further it is run and 'fname' is the name of the file the 6361147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudsonreports are written to. These parameters all have defaults (5, 4 and 6461147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson"reflog.txt" respectively), so the minimal invocation is '-R ::'. 6561147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson 669e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum-u is used to specify which special resource intensive tests to run, 679e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumsuch as those requiring large file support or network connectivity. 689e9d4f8ed8d467d0558251f43c5decc754712d53Guido van RossumThe argument is a comma-separated list of words indicating the 699e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossumresources to test. Currently only the following are defined: 7008fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 713a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake all - Enable all special resources. 723a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake 73315aa361fc60d3328aad3a5dcfd42f08213c25fbGuido van Rossum audio - Tests that use the audio device. (There are known 74315aa361fc60d3328aad3a5dcfd42f08213c25fbGuido van Rossum cases of broken audio drivers that can crash Python or 75315aa361fc60d3328aad3a5dcfd42f08213c25fbGuido van Rossum even the Linux kernel.) 76315aa361fc60d3328aad3a5dcfd42f08213c25fbGuido van Rossum 772158df0b4d8358b5efdcac3024e8cc6d6c92d981Andrew M. Kuchling curses - Tests that use curses and will modify the terminal's 782158df0b4d8358b5efdcac3024e8cc6d6c92d981Andrew M. Kuchling state and output modes. 791633a2e3452b40d0e9bb1f15ab16cd6b90f15a19Tim Peters 809e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum largefile - It is okay to run some test that may create huge 819e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum files. These tests can take a long time and may 829e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum consume >2GB of disk space temporarily. 8308fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 849e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum network - It is okay to run tests that use external network 859e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum resource, e.g. testing SSL support for sockets. 861c6b1a2b4ea38955a3f0514f4709bafd0be96c5eMartin v. Löwis 871c6b1a2b4ea38955a3f0514f4709bafd0be96c5eMartin v. Löwis bsddb - It is okay to run the bsddb testsuite, which takes 881c6b1a2b4ea38955a3f0514f4709bafd0be96c5eMartin v. Löwis a long time to complete. 894dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake 907c85fa4a5203912aca564ce719a0fdd0fd5411e5Raymond Hettinger decimal - Test the decimal module against a large suite that 917c85fa4a5203912aca564ce719a0fdd0fd5411e5Raymond Hettinger verifies compliance with standards. 927c85fa4a5203912aca564ce719a0fdd0fd5411e5Raymond Hettinger 934336eda88640695b23790e4f52de9ee92c7fee73Jeremy Hylton compiler - Test the compiler package by compiling all the source 944336eda88640695b23790e4f52de9ee92c7fee73Jeremy Hylton in the standard library and test suite. This takes 9568c04534182f2c09783b6506701a8bc25c98b4a9Raymond Hettinger a long time. Enabling this resource also allows 9668c04534182f2c09783b6506701a8bc25c98b4a9Raymond Hettinger test_tokenize to verify round-trip lexing on every 9768c04534182f2c09783b6506701a8bc25c98b4a9Raymond Hettinger file in the test library. 984336eda88640695b23790e4f52de9ee92c7fee73Jeremy Hylton 99eba28bea9b8ef7df010e65c630b8c0f7009c6005Tim Peters subprocess Run all tests for the subprocess module. 100f7f1bb7ff5039626c856efafb68a4d338ab96642Peter Astrand 101aaa2f1dea706daf2a5f431d97a3e3120dba652d2Hye-Shik Chang urlfetch - It is okay to download files required on testing. 102aaa2f1dea706daf2a5f431d97a3e3120dba652d2Hye-Shik Chang 1034dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred DrakeTo enable all resources except one, use '-uall,-<resource>'. For 1044dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drakeexample, to run all the tests except for the bsddb tests, give the 1054dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drakeoption '-uall,-bsddb'. 106152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum""" 107152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 108152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumimport os 1093b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawimport sys 110152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumimport getopt 111ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaroimport random 112dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossumimport warnings 11361147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudsonimport sre 1143b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawimport cStringIO 1153b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawimport traceback 116dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum 117dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum# I see no other way to suppress these warnings; 118dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum# putting them in test_grammar.py has no effect: 11988b1defb6f770c4f74788e8296b88fc31c3936ceGuido van Rossumwarnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, 120dc15c27f505930a69c73f8c2baf1f9caff9252efGuido van Rossum ".*test.test_grammar$") 121c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossumif sys.maxint > 0x7fffffff: 122c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum # Also suppress them in <string>, because for 64-bit platforms, 123c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum # that's where test_grammar.py hides them. 124c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, 125c34c4fc3ab497ec1dd4f8c921798927d1b6d13e2Guido van Rossum "<string>") 126152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 127bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# MacOSX (a.k.a. Darwin) has a default stack size that is too small 128bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# for deeply recursive regular expressions. We see this as crashes in 129bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# the Python test suite when running test_re.py and test_sre.py. The 130bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# fix is to set the stack limit to 2048. 131bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# This approach may also be useful for other Unixy platforms that 132bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum# suffer from small default stack limits. 133bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossumif sys.platform == 'darwin': 134bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum try: 135bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum import resource 136bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum except ImportError: 137bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum pass 138bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum else: 139bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum soft, hard = resource.getrlimit(resource.RLIMIT_STACK) 140bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum newsoft = min(hard, max(soft, 1024*2048)) 141bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum resource.setrlimit(resource.RLIMIT_STACK, (newsoft, hard)) 142bb48465273d2aa98fc7669e99b0d5fb1c57962deGuido van Rossum 14304f357cffef6d764f2f0ff2671dabde75ec250d1Barry Warsawfrom test import test_support 1443a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake 1457c85fa4a5203912aca564ce719a0fdd0fd5411e5Raymond HettingerRESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network', 'bsddb', 146aaa2f1dea706daf2a5f431d97a3e3120dba652d2Hye-Shik Chang 'decimal', 'compiler', 'subprocess', 'urlfetch') 1473a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake 1483a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake 14908fca5212528e073600c27c70a34eeef445f393bBarry Warsawdef usage(code, msg=''): 15008fca5212528e073600c27c70a34eeef445f393bBarry Warsaw print __doc__ 15108fca5212528e073600c27c70a34eeef445f393bBarry Warsaw if msg: print msg 15208fca5212528e073600c27c70a34eeef445f393bBarry Warsaw sys.exit(code) 15308fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 15408fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 1553b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsawdef main(tests=None, testdir=None, verbose=0, quiet=False, generate=False, 1563b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw exclude=False, single=False, randomize=False, fromfile=None, 157aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald findleaks=False, use_resources=None, trace=False, coverdir='coverage', 15804824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis runleaks=False, huntrleaks=False, verbose2=False): 1596fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """Execute a test suite. 1606fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1617e47402264cf87b9bbb61fc9ff610af08add7c7bThomas Wouters This also parses command-line options and modifies its behavior 162004d5e6880940ddbb38460986ac62ee0f1bae97dFred Drake accordingly. 1636fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1646fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum tests -- a list of strings containing test names (optional) 1656fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum testdir -- the directory in which to look for tests (optional) 1666fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1676fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum Users other than the Python test suite will certainly want to 1686fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum specify testdir; if it's omitted, the directory containing the 169004d5e6880940ddbb38460986ac62ee0f1bae97dFred Drake Python test suite is searched for. 1706fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum 1716fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum If the tests argument is omitted, the tests listed on the 1726fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum command-line will be used. If that's empty, too, then all *.py 1736fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum files beginning with test_ will be used. 174ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaro 1753b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw The other default arguments (verbose, quiet, generate, exclude, single, 176aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald randomize, findleaks, use_resources, trace and coverdir) allow programmers 177aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald calling main() directly to set the values that would normally be set by 178aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald flags on the command line. 1796fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """ 180004d5e6880940ddbb38460986ac62ee0f1bae97dFred Drake 1818dee809410e2d433bb0be5d8a1699736b90db0b5Tim Peters test_support.record_original_stdout(sys.stdout) 182152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum try: 18304824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis opts, args = getopt.getopt(sys.argv[1:], 'hvgqxsrf:lu:t:TD:NLR:w', 18408fca5212528e073600c27c70a34eeef445f393bBarry Warsaw ['help', 'verbose', 'quiet', 'generate', 185c5000dfc4098f8547461e790a91536a923124261Tim Peters 'exclude', 'single', 'random', 'fromfile', 1863b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw 'findleaks', 'use=', 'threshold=', 'trace', 187aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald 'coverdir=', 'nocoverdir', 'runleaks', 18804824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis 'huntrleaks=', 'verbose2', 1893b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw ]) 190152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum except getopt.error, msg: 19108fca5212528e073600c27c70a34eeef445f393bBarry Warsaw usage(2, msg) 19208fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 19308fca5212528e073600c27c70a34eeef445f393bBarry Warsaw # Defaults 19408fca5212528e073600c27c70a34eeef445f393bBarry Warsaw if use_resources is None: 19508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw use_resources = [] 196152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum for o, a in opts: 19708fca5212528e073600c27c70a34eeef445f393bBarry Warsaw if o in ('-h', '--help'): 19808fca5212528e073600c27c70a34eeef445f393bBarry Warsaw usage(0) 19908fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-v', '--verbose'): 20008fca5212528e073600c27c70a34eeef445f393bBarry Warsaw verbose += 1 20104824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis elif o in ('-w', '--verbose2'): 20204824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis verbose2 = True 20308fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-q', '--quiet'): 2043b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw quiet = True; 20508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw verbose = 0 20608fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-g', '--generate'): 2073b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw generate = True 20808fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-x', '--exclude'): 2093b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw exclude = True 21008fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-s', '--single'): 2113b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw single = True 21208fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-r', '--randomize'): 2133b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw randomize = True 214c5000dfc4098f8547461e790a91536a923124261Tim Peters elif o in ('-f', '--fromfile'): 215c5000dfc4098f8547461e790a91536a923124261Tim Peters fromfile = a 21608fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-l', '--findleaks'): 2173b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw findleaks = True 2180179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro elif o in ('-L', '--runleaks'): 2190179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro runleaks = True 2209e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum elif o in ('-t', '--threshold'): 2219e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum import gc 2229e9d4f8ed8d467d0558251f43c5decc754712d53Guido van Rossum gc.set_threshold(int(a)) 2233b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw elif o in ('-T', '--coverage'): 2243b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw trace = True 225aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald elif o in ('-D', '--coverdir'): 226aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald coverdir = os.path.join(os.getcwd(), a) 227aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald elif o in ('-N', '--nocoverdir'): 228aee4da6b83e49de68fed0c6b999aa109eab98f0dWalter Dörwald coverdir = None 22961147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson elif o in ('-R', '--huntrleaks'): 23061147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson huntrleaks = a.split(':') 23161147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson if len(huntrleaks) != 3: 23261147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson print a, huntrleaks 23361147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson usage(2, '-R takes three colon-separated arguments') 23461147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson if len(huntrleaks[0]) == 0: 23561147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson huntrleaks[0] = 5 23661147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson else: 23761147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson huntrleaks[0] = int(huntrleaks[0]) 23861147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson if len(huntrleaks[1]) == 0: 23961147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson huntrleaks[1] = 4 24061147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson else: 24161147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson huntrleaks[1] = int(huntrleaks[1]) 24261147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson if len(huntrleaks[2]) == 0: 24361147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson huntrleaks[2] = "reflog.txt" 24408fca5212528e073600c27c70a34eeef445f393bBarry Warsaw elif o in ('-u', '--use'): 245fe3f6969f54cfd3df24f54572a809e0deb47064fGuido van Rossum u = [x.lower() for x in a.split(',')] 246fe3f6969f54cfd3df24f54572a809e0deb47064fGuido van Rossum for r in u: 2473a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake if r == 'all': 2484dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake use_resources[:] = RESOURCE_NAMES 2494dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake continue 2504dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake remove = False 2514dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake if r[0] == '-': 2524dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake remove = True 2534dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake r = r[1:] 2543a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake if r not in RESOURCE_NAMES: 2553a15dace3606d6ea9d59486c5d080a1cb4192ff4Fred Drake usage(1, 'Invalid -u/--use option: ' + a) 2564dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake if remove: 2574dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake if r in use_resources: 2584dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake use_resources.remove(r) 2594dd0f7ef7a0a7e7abe2043bbf8804fde962a8de3Fred Drake elif r not in use_resources: 260e41abab33b0b467acd6bdc7d73ce4b5cef4fd5bfAndrew MacIntyre use_resources.append(r) 261a412220bbf8ef8391eb38b35d62520cfbc2fc039Guido van Rossum if generate and verbose: 26208fca5212528e073600c27c70a34eeef445f393bBarry Warsaw usage(2, "-g and -v don't go together!") 263c5000dfc4098f8547461e790a91536a923124261Tim Peters if single and fromfile: 264c5000dfc4098f8547461e790a91536a923124261Tim Peters usage(2, "-s and -f don't go together!") 26508fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 266152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum good = [] 267152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum bad = [] 268152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum skipped = [] 2699a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake resource_denieds = [] 270e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 271d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer if findleaks: 272a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw try: 273a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw import gc 274a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw except ImportError: 2758a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer print 'No GC available, disabling findleaks.' 2763b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw findleaks = False 277a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw else: 2788a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # Uncomment the line below to report garbage that is not 2798a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # freeable by reference counting alone. By default only 2808a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # garbage that is not collectable by the GC is reported. 2818a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer #gc.set_debug(gc.DEBUG_SAVEALL) 282d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer found_garbage = [] 283a873b03ebb24076b3664ba694eeed4ab07d176d9Barry Warsaw 284e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if single: 285e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw from tempfile import gettempdir 286e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw filename = os.path.join(gettempdir(), 'pynexttest') 287e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw try: 288e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp = open(filename, 'r') 289fc170b1fd5db978f4e8d4c23c138a7b59df681ecEric S. Raymond next = fp.read().strip() 290e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw tests = [next] 291e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp.close() 292e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw except IOError: 293e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw pass 294c5000dfc4098f8547461e790a91536a923124261Tim Peters 295c5000dfc4098f8547461e790a91536a923124261Tim Peters if fromfile: 296c5000dfc4098f8547461e790a91536a923124261Tim Peters tests = [] 297c5000dfc4098f8547461e790a91536a923124261Tim Peters fp = open(fromfile) 298c5000dfc4098f8547461e790a91536a923124261Tim Peters for line in fp: 299c5000dfc4098f8547461e790a91536a923124261Tim Peters guts = line.split() # assuming no test has whitespace in its name 300c5000dfc4098f8547461e790a91536a923124261Tim Peters if guts and not guts[0].startswith('#'): 301c5000dfc4098f8547461e790a91536a923124261Tim Peters tests.extend(guts) 302c5000dfc4098f8547461e790a91536a923124261Tim Peters fp.close() 303c5000dfc4098f8547461e790a91536a923124261Tim Peters 304c5000dfc4098f8547461e790a91536a923124261Tim Peters # Strip .py extensions. 305c5000dfc4098f8547461e790a91536a923124261Tim Peters if args: 306c5000dfc4098f8547461e790a91536a923124261Tim Peters args = map(removepy, args) 307c5000dfc4098f8547461e790a91536a923124261Tim Peters if tests: 308c5000dfc4098f8547461e790a91536a923124261Tim Peters tests = map(removepy, tests) 309c5000dfc4098f8547461e790a91536a923124261Tim Peters 3106c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum stdtests = STDTESTS[:] 3116c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum nottests = NOTTESTS[:] 312152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if exclude: 3136c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum for arg in args: 3146c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum if arg in stdtests: 3156c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum stdtests.remove(arg) 3166c74fea07d42ac6bc3bc078fb13f903f6cdbbcb9Guido van Rossum nottests[:0] = args 31741360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum args = [] 318747e1cade657e1e15c0f51d898de901da723e6a2Guido van Rossum tests = tests or args or findtests(testdir, stdtests, nottests) 319e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if single: 320e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw tests = tests[:1] 321ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaro if randomize: 322ab1c7918f683e540ae5651c1b585ecda16ae352dSkip Montanaro random.shuffle(tests) 3233b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if trace: 3243b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw import trace 3253b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix], 3263b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw trace=False, count=True) 32741360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum test_support.verbose = verbose # Tell tests to be moderately quiet 32808fca5212528e073600c27c70a34eeef445f393bBarry Warsaw test_support.use_resources = use_resources 3295796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum save_modules = sys.modules.keys() 330152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum for test in tests: 33141360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if not quiet: 33241360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print test 3333cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 3343b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if trace: 3353b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw # If we're tracing code coverage, then we don't exit with status 3363b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw # if on a false return value from main. 3373b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw tracer.runctx('runtest(test, generate, verbose, quiet, testdir)', 3383b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw globals=globals(), locals=vars()) 33941360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum else: 34014ca327f998511da5e89f819204c54fa582dd696Neal Norwitz try: 34114ca327f998511da5e89f819204c54fa582dd696Neal Norwitz ok = runtest(test, generate, verbose, quiet, testdir, 34214ca327f998511da5e89f819204c54fa582dd696Neal Norwitz huntrleaks) 34314ca327f998511da5e89f819204c54fa582dd696Neal Norwitz except KeyboardInterrupt: 34414ca327f998511da5e89f819204c54fa582dd696Neal Norwitz # print a newline separate from the ^C 34514ca327f998511da5e89f819204c54fa582dd696Neal Norwitz print 34614ca327f998511da5e89f819204c54fa582dd696Neal Norwitz break 34714ca327f998511da5e89f819204c54fa582dd696Neal Norwitz except: 34814ca327f998511da5e89f819204c54fa582dd696Neal Norwitz raise 3493b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if ok > 0: 3503b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw good.append(test) 3513b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw elif ok == 0: 3523b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw bad.append(test) 3533b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw else: 3543b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw skipped.append(test) 3553b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if ok == -2: 3563b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw resource_denieds.append(test) 357d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer if findleaks: 358d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer gc.collect() 359d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer if gc.garbage: 3608a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer print "Warning: test created", len(gc.garbage), 3618a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer print "uncollectable object(s)." 3628a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # move the uncollectable objects somewhere so we don't see 3638a00abc0ff6544a7004a86b4c96e23ca23ac66dcNeil Schemenauer # them again 364d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer found_garbage.extend(gc.garbage) 365d569f23da94babd616751cd46eea38963e4edfa1Neil Schemenauer del gc.garbage[:] 3665796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum # Unload the newly imported modules (best effort finalization) 3675796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum for module in sys.modules.keys(): 36851931144427faa001a6db3cfc37380526be256b6Guido van Rossum if module not in save_modules and module.startswith("test."): 3695796d26794eee634a4a06637d99d8d5c58da2bdbGuido van Rossum test_support.unload(module) 3707a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton 3717a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton # The lists won't be sorted if running with -r 3727a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton good.sort() 3737a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton bad.sort() 3747a1ea0e88034cdc03d546f0947fc8ecb30f4435fJeremy Hylton skipped.sort() 375e0c446bb4ad67294f42d4cb53b4ff28413bd8ddeTim Peters 376152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if good and not quiet: 37741360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if not bad and not skipped and len(good) > 1: 37841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print "All", 37941360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print count(len(good), "test"), "OK." 3801a4d77b2527ced1052b4faae3d176b125a764325Tim Peters if verbose: 381408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw print "CAUTION: stdout isn't compared in verbose mode:" 382408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw print "a test that passes in verbose mode may fail without it." 383152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if bad: 384a45da92484ceececf1cf32b4dfb16004945b001eTim Peters print count(len(bad), "test"), "failed:" 385a45da92484ceececf1cf32b4dfb16004945b001eTim Peters printlist(bad) 386152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if skipped and not quiet: 387a45da92484ceececf1cf32b4dfb16004945b001eTim Peters print count(len(skipped), "test"), "skipped:" 388a45da92484ceececf1cf32b4dfb16004945b001eTim Peters printlist(skipped) 389e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 390b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters e = _ExpectedSkips() 391a2be2d624a47e420266606f0cb2a2e030797f650Tim Peters plat = sys.platform 392b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters if e.isvalid(): 393a690a9967e715663b7a421c9ebdad91381cdf1e4Raymond Hettinger surprise = set(skipped) - e.getexpected() - set(resource_denieds) 394b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters if surprise: 395b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print count(len(surprise), "skip"), \ 396a45da92484ceececf1cf32b4dfb16004945b001eTim Peters "unexpected on", plat + ":" 397a45da92484ceececf1cf32b4dfb16004945b001eTim Peters printlist(surprise) 398b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters else: 399b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print "Those skips are all expected on", plat + "." 400b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters else: 401b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print "Ask someone to teach regrtest.py about which tests are" 402b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters print "expected to get skipped on", plat + "." 403b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 40404824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis if verbose2 and bad: 40504824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis print "Re-running failed tests in verbose mode" 40604824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis for test in bad: 407922dd7d49da75b07e27f917db0166f67bdbef3d3Tim Peters print "Re-running test %r in verbose mode" % test 408922dd7d49da75b07e27f917db0166f67bdbef3d3Tim Peters sys.stdout.flush() 40904824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis try: 41004824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis test_support.verbose = 1 41104824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis ok = runtest(test, generate, 1, quiet, testdir, 41204824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis huntrleaks) 41304824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis except KeyboardInterrupt: 41404824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis # print a newline separate from the ^C 41504824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis print 41604824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis break 41704824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis except: 41804824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis raise 41904824ce8ed3e4e936487758ca6672b6dec75a8a7Martin v. Löwis 420e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if single: 421e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw alltests = findtests(testdir, stdtests, nottests) 422e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw for i in range(len(alltests)): 423e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if tests[0] == alltests[i]: 424e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw if i == len(alltests) - 1: 425e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw os.unlink(filename) 426e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw else: 427e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp = open(filename, 'w') 428e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp.write(alltests[i+1] + '\n') 429e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw fp.close() 430e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw break 431e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw else: 432e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw os.unlink(filename) 433e11e3dee3e4f467d51c9d36e24b0b09e64eab295Barry Warsaw 4343b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if trace: 4353b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw r = tracer.results() 4363b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw r.write_results(show_missing=True, summary=True, coverdir=coverdir) 4373b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw 4380179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro if runleaks: 4390179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro os.system("leaks %d" % os.getpid()) 4400179a18034b2316a70655d0f05bfbb20a0881f17Skip Montanaro 4415943b4ac1067e5011b66697396d5df93b5ef9af0Tim Peters sys.exit(len(bad) > 0) 44208fca5212528e073600c27c70a34eeef445f393bBarry Warsaw 443152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 4446fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van RossumSTDTESTS = [ 445152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_grammar', 446152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_opcodes', 447152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_operations', 448152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_builtin', 449152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_exceptions', 450152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_types', 451152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum ] 452152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 4536fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van RossumNOTTESTS = [ 454152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 'test_support', 45562e2c7e3dfffd8465a54b99fc6d3c2a60acab350Jeremy Hylton 'test_future1', 45662e2c7e3dfffd8465a54b99fc6d3c2a60acab350Jeremy Hylton 'test_future2', 4578471a35febdbfbfab51b9d4b5fe51694fe6ca536Jeremy Hylton 'test_future3', 458152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum ] 459152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 4606fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossumdef findtests(testdir=None, stdtests=STDTESTS, nottests=NOTTESTS): 461152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum """Return a list of all applicable test modules.""" 4626fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum if not testdir: testdir = findtestdir() 463152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum names = os.listdir(testdir) 464152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum tests = [] 465152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum for name in names: 466e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum if name[:5] == "test_" and name[-3:] == os.extsep+"py": 46741360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum modname = name[:-3] 46841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if modname not in stdtests and modname not in nottests: 46941360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum tests.append(modname) 470152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum tests.sort() 471152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum return stdtests + tests 472152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 47361147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudsondef runtest(test, generate, verbose, quiet, testdir=None, huntrleaks=False): 4746fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """Run a single test. 4756fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum test -- the name of the test 4766fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum generate -- if true, generate output, instead of running the test 4776fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum and comparing it to a previously created output file 4786fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum verbose -- if true, print more messages 479f29f47b38beae54db959d0dd2f0800d5dd3fc174Trent Mick quiet -- if true, don't print 'skipped' messages (probably redundant) 4806fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum testdir -- test directory 4816fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4Guido van Rossum """ 482152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum test_support.unload(test) 4833b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw if not testdir: 4843b6d025d9bc6a0109e9a2ebd28a4864e8007193aBarry Warsaw testdir = findtestdir() 485152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum outputdir = os.path.join(testdir, "output") 486152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum outputfile = os.path.join(outputdir, test) 4879390cc15da5cd6920bd41bb4cd146d5d0601345fTim Peters if verbose: 48841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum cfp = None 4890fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum else: 49074e67661a69ddb43a21a486c66965a052540cdd0Raymond Hettinger cfp = cStringIO.StringIO() 49161147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson if huntrleaks: 49261147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson refrep = open(huntrleaks[2], "a") 493152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum try: 494342ca75d9552ff5c606c465d1392a32e44257fe5Tim Peters save_stdout = sys.stdout 49541360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum try: 49641360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if cfp: 49741360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum sys.stdout = cfp 49841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print test # Output file starts with test name 499408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw if test.startswith('test.'): 500408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw abstest = test 501408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw else: 502408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # Always import it from the test package 503408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw abstest = 'test.' + test 504408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw the_package = __import__(abstest, globals(), locals(), []) 505408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw the_module = getattr(the_package, test) 506d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # Most tests run to completion simply as a side-effect of 507d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # being imported. For the benefit of tests that can't run 508d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # that way (like test_threaded_import), explicitly invoke 509d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters # their test_main() function (if it exists). 510d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters indirect_test = getattr(the_module, "test_main", None) 511d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters if indirect_test is not None: 512d97422115e9ed6498bc7a6f792a0bf8f278f9097Tim Peters indirect_test() 51361147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson if huntrleaks: 51461147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson # This code *is* hackish and inelegant, yes. 51561147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson # But it seems to do the job. 51661147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson import copy_reg 51761147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson fs = warnings.filters[:] 51861147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson ps = copy_reg.dispatch_table.copy() 51961147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson pic = sys.path_importer_cache.copy() 52061147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson import gc 52161147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson def cleanup(): 522545d4962f5860c49c44f06fc80c4678271cfac18Neal Norwitz import _strptime, linecache, warnings, dircache 523545d4962f5860c49c44f06fc80c4678271cfac18Neal Norwitz import urlparse, urllib, urllib2 52461147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson from distutils.dir_util import _path_created 52561147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson _path_created.clear() 52661147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson warnings.filters[:] = fs 52761147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson gc.collect() 52861147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson sre.purge() 52961147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson _strptime._regex_cache.clear() 53061147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson urlparse.clear_cache() 531545d4962f5860c49c44f06fc80c4678271cfac18Neal Norwitz urllib.urlcleanup() 532545d4962f5860c49c44f06fc80c4678271cfac18Neal Norwitz urllib2.install_opener(None) 53361147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson copy_reg.dispatch_table.clear() 53461147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson copy_reg.dispatch_table.update(ps) 53561147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson sys.path_importer_cache.clear() 53661147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson sys.path_importer_cache.update(pic) 53761147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson dircache.reset() 5381a7285250ba1fb504c10fe3b402e5ebba98d287cMichael W. Hudson linecache.clearcache() 53961147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson if indirect_test: 54061147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson def run_the_test(): 54161147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson indirect_test() 54261147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson else: 54361147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson def run_the_test(): 54461147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson reload(the_module) 54561147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson deltas = [] 54661147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson repcount = huntrleaks[0] + huntrleaks[1] 54761147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson print >> sys.stderr, "beginning", repcount, "repetitions" 54861147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson print >> sys.stderr, \ 54961147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson ("1234567890"*(repcount//10 + 1))[:repcount] 55061147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson for i in range(repcount): 55161147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson rc = sys.gettotalrefcount() 55261147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson run_the_test() 55361147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson sys.stderr.write('.') 55461147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson cleanup() 55561147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson deltas.append(sys.gettotalrefcount() - rc - 2) 55661147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson print >>sys.stderr 55761147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson if max(map(abs, deltas[-huntrleaks[1]:])) > 0: 558e667e665070624f9cceaa87f15328ec5d1031ba0Michael W. Hudson print >>sys.stderr, test, 'leaked', \ 559e667e665070624f9cceaa87f15328ec5d1031ba0Michael W. Hudson deltas[-huntrleaks[1]:], 'references' 56061147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson print >>refrep, test, 'leaked', \ 56161147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson deltas[-huntrleaks[1]:], 'references' 56261147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson # The end of the huntrleaks hackishness. 56341360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum finally: 564342ca75d9552ff5c606c465d1392a32e44257fe5Tim Peters sys.stdout = save_stdout 5659a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake except test_support.ResourceDenied, msg: 5669a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake if not quiet: 5679a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake print test, "skipped --", msg 5689a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake sys.stdout.flush() 5699a0db07c2ffd4e4b3ae75d5820dc6b4152b3582bFred Drake return -2 5703af826ebca80f8a6c782fb590c77ac210ae9e22dThomas Wouters except (ImportError, test_support.TestSkipped), msg: 571f29f47b38beae54db959d0dd2f0800d5dd3fc174Trent Mick if not quiet: 572de4742b87f7775fc3d9fa76cd640e7cdd5ef69a2Fred Drake print test, "skipped --", msg 5733cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 57441360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return -1 575fe5c22a85e6740012143cdbdc384bd2ebc788c27Fred Drake except KeyboardInterrupt: 576fe5c22a85e6740012143cdbdc384bd2ebc788c27Fred Drake raise 577152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum except test_support.TestFailed, msg: 57841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum print "test", test, "failed --", msg 5793cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 58041360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return 0 5819e48b272b96aabf597b7aedd358ab890ddbf4c98Guido van Rossum except: 58241360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum type, value = sys.exc_info()[:2] 58327c4b39025eb9e20f9d7a36b6aa0bb9c97f9bba5Fred Drake print "test", test, "crashed --", str(type) + ":", value 5843cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 58541360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum if verbose: 58641360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum traceback.print_exc(file=sys.stdout) 5873cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 58841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return 0 589152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum else: 5900fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum if not cfp: 5910fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 5920fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum output = cfp.getvalue() 593e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake if generate: 594e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake if output == test + "\n": 595e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake if os.path.exists(outputfile): 596e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake # Write it since it already exists (and the contents 597e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake # may have changed), but let the user know it isn't 598e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake # needed: 599e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake print "output file", outputfile, \ 600e51fe8d0a3d2a3fc83fd4f02521b0808c073bf50Fred Drake "is no longer needed; consider removing it" 6010fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum else: 6020fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum # We don't need it, so don't create it. 6030fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 6040fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp = open(outputfile, "w") 6050fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp.write(output) 6060fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp.close() 6070fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 6080fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum if os.path.exists(outputfile): 6090fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp = open(outputfile, "r") 6100fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum expected = fp.read() 6110fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum fp.close() 6120fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum else: 6130fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum expected = test + "\n" 61461147f63d9eb20bdd34d5f7549f8379155aefd60Michael W. Hudson if output == expected or huntrleaks: 6150fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 1 6160fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum print "test", test, "produced unexpected output:" 6173cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 6180fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum reportdiff(expected, output) 6193cda93ebf60e501350f42fdab72c18eab54718fcGuido van Rossum sys.stdout.flush() 6200fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum return 0 6210fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum 6220fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossumdef reportdiff(expected, output): 6230fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum import difflib 624c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "*" * 70 625c377b16d12ba325bb108eca575447d66f19294c0Tim Peters a = expected.splitlines(1) 626c377b16d12ba325bb108eca575447d66f19294c0Tim Peters b = output.splitlines(1) 627cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum sm = difflib.SequenceMatcher(a=a, b=b) 628cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum tuples = sm.get_opcodes() 629c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 630cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum def pair(x0, x1): 631c377b16d12ba325bb108eca575447d66f19294c0Tim Peters # x0:x1 are 0-based slice indices; convert to 1-based line indices. 632cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum x0 += 1 633cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum if x0 >= x1: 634c377b16d12ba325bb108eca575447d66f19294c0Tim Peters return "line " + str(x0) 635cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum else: 636c377b16d12ba325bb108eca575447d66f19294c0Tim Peters return "lines %d-%d" % (x0, x1) 637c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 638cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum for op, a0, a1, b0, b1 in tuples: 639cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum if op == 'equal': 640cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum pass 641c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 642cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum elif op == 'delete': 643c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "***", pair(a0, a1), "of expected output missing:" 644cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum for line in a[a0:a1]: 645c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "-", line, 646c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 647cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum elif op == 'replace': 648c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "*** mismatch between", pair(a0, a1), "of expected", \ 649c377b16d12ba325bb108eca575447d66f19294c0Tim Peters "output and", pair(b0, b1), "of actual output:" 650c377b16d12ba325bb108eca575447d66f19294c0Tim Peters for line in difflib.ndiff(a[a0:a1], b[b0:b1]): 651c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print line, 652c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 653cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum elif op == 'insert': 654c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "***", pair(b0, b1), "of actual output doesn't appear", \ 655c377b16d12ba325bb108eca575447d66f19294c0Tim Peters "in expected output after line", str(a1)+":" 656cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum for line in b[b0:b1]: 657c377b16d12ba325bb108eca575447d66f19294c0Tim Peters print "+", line, 658c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 659cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum else: 660cf691935bb1a59bd7ff680b26b0b0040b7e25449Guido van Rossum print "get_opcodes() returned bad tuple?!?!", (op, a0, a1, b0, b1) 661c377b16d12ba325bb108eca575447d66f19294c0Tim Peters 6620fcca4e815e3dbb28c73108376079a94ad6ee8deGuido van Rossum print "*" * 70 663152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 664152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumdef findtestdir(): 665152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if __name__ == '__main__': 66641360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum file = sys.argv[0] 667152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum else: 66841360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum file = __file__ 669152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum testdir = os.path.dirname(file) or os.curdir 670152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum return testdir 671152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 672c5000dfc4098f8547461e790a91536a923124261Tim Petersdef removepy(name): 673c5000dfc4098f8547461e790a91536a923124261Tim Peters if name.endswith(os.extsep + "py"): 674c5000dfc4098f8547461e790a91536a923124261Tim Peters name = name[:-3] 675c5000dfc4098f8547461e790a91536a923124261Tim Peters return name 676c5000dfc4098f8547461e790a91536a923124261Tim Peters 677152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumdef count(n, word): 678152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum if n == 1: 67941360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return "%d %s" % (n, word) 680152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum else: 68141360a4696f488e49e5409b3b1baf1fff6ae0044Guido van Rossum return "%d %ss" % (n, word) 682152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossum 683a45da92484ceececf1cf32b4dfb16004945b001eTim Petersdef printlist(x, width=70, indent=4): 6847c7efe90737d4636633127a95a6cab1a55d57cf4Tim Peters """Print the elements of iterable x to stdout. 685a45da92484ceececf1cf32b4dfb16004945b001eTim Peters 686a45da92484ceececf1cf32b4dfb16004945b001eTim Peters Optional arg width (default 70) is the maximum line length. 687a45da92484ceececf1cf32b4dfb16004945b001eTim Peters Optional arg indent (default 4) is the number of blanks with which to 688a45da92484ceececf1cf32b4dfb16004945b001eTim Peters begin each line. 689a45da92484ceececf1cf32b4dfb16004945b001eTim Peters """ 690a45da92484ceececf1cf32b4dfb16004945b001eTim Peters 691ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters from textwrap import fill 692ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters blanks = ' ' * indent 693ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters print fill(' '.join(map(str, x)), width, 694ba78bc4a3216b51398bab59157572a51c38b9ef4Tim Peters initial_indent=blanks, subsequent_indent=blanks) 695a45da92484ceececf1cf32b4dfb16004945b001eTim Peters 696de14a30d1d70073d36f207fe432e4adad5178399Tim Peters# Map sys.platform to a string containing the basenames of tests 697de14a30d1d70073d36f207fe432e4adad5178399Tim Peters# expected to be skipped on that platform. 6982a182dbf3f2520ad753792068391775d102b13dfTim Peters# 6992a182dbf3f2520ad753792068391775d102b13dfTim Peters# Special cases: 7002a182dbf3f2520ad753792068391775d102b13dfTim Peters# test_pep277 7012a182dbf3f2520ad753792068391775d102b13dfTim Peters# The _ExpectedSkips constructor adds this to the set of expected 7022a182dbf3f2520ad753792068391775d102b13dfTim Peters# skips if not os.path.supports_unicode_filenames. 703b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters# test_socket_ssl 704b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters# Controlled by test_socket_ssl.skip_expected. Requires the network 705b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters# resource, and a socket module with ssl support. 70655b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz# test_timeout 70755b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz# Controlled by test_timeout.skip_expected. Requires the network 70855b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz# resource and a socket module. 709de14a30d1d70073d36f207fe432e4adad5178399Tim Peters 710f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum_expectations = { 711f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum 'win32': 712f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """ 713c7c516aa5140d255f18ffd2e8569434f0904f5dbTim Peters test__locale 714901dc983168d4ca706ed664a8f5134ee3add26edRaymond Hettinger test_applesingle 715f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_al 716823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 71778e35f931128d017d5955841eac8c397ff32595cTim Peters test_bsddb3 718f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cd 719f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cl 720f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_commands 721f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_crypt 722d703057752d52cef6082a920879a0b62cdeffacaTim Peters test_curses 723f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_dbm 724f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_dl 725f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_fcntl 726f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_fork1 727f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_gdbm 728f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_gl 729f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_grp 730f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_imgfile 731fd8e6e599051de07cdb8e9abc9dbadf37c5fca0cTim Peters test_ioctl 732f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_largefile 733f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_linuxaudiodev 734f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_mhlib 735f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_nis 736f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_openpty 737efc4b121694888e00072f5a079de5496afecb05aTim Peters test_ossaudiodev 738f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_poll 739003eb3088283927e3155f2e2317d3d516edd9645Tim Peters test_posix 740f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_pty 741f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_pwd 7421e33ffa5c719ec611e182681c4a5f2ceb62a08f5Tim Peters test_resource 743f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_signal 744f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_sunaudiodev 745cea2cc4a21e7e2ba84f6dc11682821e502bd1f5fTim Peters test_threadsignals 746f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_timing 747f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """, 748f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum 'linux2': 749f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """ 750f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_al 751944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 752823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 753f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cd 754f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_cl 755f66dacdb017c7481c3ba4f0743d5446146de33c8Guido van Rossum test_curses 756f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_dl 757f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_gl 758f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_imgfile 759f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_largefile 7604507ec70cff35468f4b1767382f38ecebd4a29a2Guido van Rossum test_linuxaudiodev 761f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_nis 762f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_ntpath 7634507ec70cff35468f4b1767382f38ecebd4a29a2Guido van Rossum test_ossaudiodev 764f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum test_sunaudiodev 765f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum """, 76649a806edbb298f2a5be3598bd80c21392cb6968dJack Jansen 'mac': 767aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum """ 768aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_al 769679751455798fab6425fda749a19e783e58b210eJack Jansen test_atexit 770aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_bsddb 771823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 772679751455798fab6425fda749a19e783e58b210eJack Jansen test_bsddb3 773679751455798fab6425fda749a19e783e58b210eJack Jansen test_bz2 774aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_cd 775aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_cl 776aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_commands 777aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_crypt 778b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen test_curses 779aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_dbm 780aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_dl 781aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_fcntl 782aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_fork1 783aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_gl 784aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_grp 785c4d6bdd58a58b365556abfe60c9f5b5f73c555f8Jack Jansen test_ioctl 786aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_imgfile 787aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_largefile 788aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_linuxaudiodev 789aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_locale 790aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_mmap 791aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_nis 792aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_ntpath 793aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_openpty 794679751455798fab6425fda749a19e783e58b210eJack Jansen test_ossaudiodev 795aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_poll 796679751455798fab6425fda749a19e783e58b210eJack Jansen test_popen 797aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_popen2 7985bb97e66dcbb110877ac17209c7d2641db6f6006Jack Jansen test_posix 799aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_pty 800aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_pwd 801679751455798fab6425fda749a19e783e58b210eJack Jansen test_resource 802aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_signal 803aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_sunaudiodev 804aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_sundry 805c4d6bdd58a58b365556abfe60c9f5b5f73c555f8Jack Jansen test_tarfile 806aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum test_timing 807aa78236636d62a07af4759b64ea89452c6690c7eGuido van Rossum """, 80821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis 'unixware7': 8090ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis """ 8100ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_al 811944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 8120ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_bsddb 813823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 8140ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_cd 8150ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_cl 8160ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_dl 8170ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_gl 8180ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_imgfile 8190ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_largefile 8200ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_linuxaudiodev 8210ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_minidom 8220ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_nis 8230ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_ntpath 8240ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_openpty 8250ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_pyexpat 8260ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_sax 8270ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_sunaudiodev 8280ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis test_sundry 8290ace326ed2ec73dfa515c89ad06fcddd6fafa4ceMartin v. Löwis """, 83021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis 'openunix8': 83121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """ 83221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_al 833944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 83421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_bsddb 835823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 83621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cd 83721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cl 83821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_dl 83921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_gl 84021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_imgfile 84121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_largefile 84221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_linuxaudiodev 84321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_minidom 84421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_nis 84521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_ntpath 84621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_openpty 84721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_pyexpat 84821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sax 84921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sunaudiodev 85021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sundry 85121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """, 85221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis 'sco_sv3': 85321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """ 85421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_al 855944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 85621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_asynchat 85721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_bsddb 858823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 85921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cd 86021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_cl 86121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_dl 86221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_fork1 86321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_gettext 86421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_gl 86521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_imgfile 86621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_largefile 86721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_linuxaudiodev 86821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_locale 86921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_minidom 87021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_nis 87121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_ntpath 87221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_openpty 87321ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_pyexpat 87421ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_queue 87521ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sax 87621ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sunaudiodev 87721ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_sundry 87821ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_thread 87921ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_threaded_import 88021ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_threadedtempfile 88121ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis test_threading 88221ee4091e10c6f05360bbb60e49aa3639408a612Martin v. Löwis """, 883e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum 'riscos': 884e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum """ 885e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_al 886944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 887e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_asynchat 888a94568a7535de60f1144e4eea0d027b87017a4b4Martin v. Löwis test_atexit 889e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_bsddb 890823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 891a94568a7535de60f1144e4eea0d027b87017a4b4Martin v. Löwis test_bsddb3 892e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_cd 893e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_cl 894e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_commands 895e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_crypt 896e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_dbm 897e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_dl 898e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_fcntl 899e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_fork1 900e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_gdbm 901e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_gl 902e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_grp 903e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_imgfile 904e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_largefile 905e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_linuxaudiodev 906e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_locale 907e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_mmap 908e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_nis 909e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_ntpath 910e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_openpty 911e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_poll 912e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_popen2 913e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_pty 914e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_pwd 915e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_strop 916e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_sunaudiodev 917e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_sundry 918e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_thread 919e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_threaded_import 920e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_threadedtempfile 921e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_threading 922e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum test_timing 923e2ae77b8b8a62e648bb1864a9b36ef3280984404Guido van Rossum """, 9248a97f4a380a7a356730e48406f8269c3efe5e6ebJack Jansen 'darwin': 925398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen """ 9262bfb94c871caeae622174485264f407d9df354b9Brett Cannon test__locale 927398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_al 928acda3394bbfb1db3b22673a80cb2d7e3c68b3da9Jack Jansen test_bsddb 9299d4270070a5d0c3bcd381d52024d811f3b0a0e39Guido van Rossum test_bsddb3 930398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_cd 931398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_cl 932398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_curses 933398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_dl 934398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_gdbm 935398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_gl 936398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_imgfile 937398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_largefile 938398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_linuxaudiodev 939acda3394bbfb1db3b22673a80cb2d7e3c68b3da9Jack Jansen test_locale 940398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_minidom 941398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_nis 942398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_ntpath 943acda3394bbfb1db3b22673a80cb2d7e3c68b3da9Jack Jansen test_ossaudiodev 944398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_poll 945398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen test_sunaudiodev 946398c236c1ba358a43a34137dc9ca670d76f7eb84Jack Jansen """, 94711c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum 'sunos5': 94811c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum """ 94911c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_al 950944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 95111c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_bsddb 952823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 95311c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_cd 95411c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_cl 95511c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_curses 95611c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_dbm 95711c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_gdbm 95811c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_gl 95911c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_gzip 96011c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_imgfile 96111c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_linuxaudiodev 96211c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_openpty 96311c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_zipfile 96411c3f0999f932e3697347dde15f99a8ad9f9216dGuido van Rossum test_zlib 965ed375e18d10d37bfea1769aa1fe69795df6cbc10Jeremy Hylton """, 966b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro 'hp-ux11': 967b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro """ 968b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_al 969944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 970b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_bsddb 971823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 972b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_cd 973b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_cl 974b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_curses 975b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_dl 976b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_gdbm 977b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_gl 978b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_gzip 979b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_imgfile 980b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_largefile 981b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_linuxaudiodev 982b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_locale 983b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_minidom 984b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_nis 985b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_ntpath 986b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_openpty 987b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_pyexpat 988b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_sax 989b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_sunaudiodev 990b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_zipfile 991b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro test_zlib 992b32302176e127a94b714f90c858b6e9c476fc7feSkip Montanaro """, 993f90ae20354ceb501f0ba0b6459df17f1a8005a47Martin v. Löwis 'atheos': 994c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters """ 995c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_al 996944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 997823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 998c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_cd 999c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_cl 1000c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_curses 1001c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_dl 1002c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_gdbm 1003c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_gl 1004c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_imgfile 1005c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_largefile 1006c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_linuxaudiodev 1007c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_locale 1008c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_mhlib 1009c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_mmap 1010c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_nis 1011c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_poll 1012c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_popen2 1013c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_resource 1014c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters test_sunaudiodev 1015c411dbaeee29dba87d5432a92fe76ea65d8e25f0Tim Peters """, 101625115940604e6051aa2fb16be88c6b8f64577251Jason Tishler 'cygwin': 101725115940604e6051aa2fb16be88c6b8f64577251Jason Tishler """ 101825115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_al 1019944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 1020823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 1021b0f89e05ad9aaf229033bbc81be43c1f826e3930Tim Peters test_bsddb3 102225115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_cd 102325115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_cl 102425115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_curses 102525115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_dbm 102625115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_gl 102725115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_imgfile 1028c23f39ca9dc540ace879fcf9746254d94293b86fJason Tishler test_ioctl 102925115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_largefile 103025115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_linuxaudiodev 103125115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_locale 103225115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_nis 10335c4ded2c3b59aa134b82ab17cdfe7ab633194ca6Jason Tishler test_ossaudiodev 103425115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_socketserver 103525115940604e6051aa2fb16be88c6b8f64577251Jason Tishler test_sunaudiodev 103625115940604e6051aa2fb16be88c6b8f64577251Jason Tishler """, 1037fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre 'os2emx': 1038fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre """ 1039fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_al 1040944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 1041fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_audioop 1042823ba28b0d436f83ebfc5b9df0d475e60e8ae5eeSkip Montanaro test_bsddb185 1043fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_bsddb3 1044fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_cd 1045fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_cl 1046fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_commands 1047fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_curses 1048fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_dl 1049fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_gl 1050fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_imgfile 1051fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_largefile 1052fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_linuxaudiodev 1053fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_mhlib 1054fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_mmap 1055fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_nis 1056fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_openpty 1057fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_ossaudiodev 1058fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_pty 1059fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_resource 1060fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_signal 1061fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre test_sunaudiodev 1062fd07e7dda709edacc16a851da981a628d61ffd72Andrew MacIntyre """, 1063944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum 'freebsd4': 1064944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum """ 1065944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_aepack 1066944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_al 1067944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_applesingle 1068944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_bsddb 1069944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_bsddb3 1070944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_cd 1071944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_cl 1072f64700a512e89c322f46f3cabda3bf58573eda54Hye-Shik Chang test_gdbm 1073944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_gl 1074944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_imgfile 1075944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_linuxaudiodev 1076944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_locale 1077944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_macfs 1078944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_macostools 1079944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_nis 1080944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_ossaudiodev 1081944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_pep277 1082944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_plistlib 1083f64700a512e89c322f46f3cabda3bf58573eda54Hye-Shik Chang test_pty 1084944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_scriptpackages 1085944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_socket_ssl 1086944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_socketserver 1087944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_sunaudiodev 1088f64700a512e89c322f46f3cabda3bf58573eda54Hye-Shik Chang test_tcl 1089944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_timeout 1090944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_unicode_file 1091944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_urllibnet 1092944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_winreg 1093944a6c32d7f78445e3516636d9fcf1c62e1663ffGuido van Rossum test_winsound 109456f88113b7272be8403f9b722c943e679e23d362Martin v. Löwis """, 10958ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum 'aix5': 10968ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum """ 10978ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_aepack 10988ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_al 10998ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_applesingle 11008ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_bsddb 11018ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_bsddb185 11028ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_bsddb3 11038ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_bz2 11048ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_cd 11058ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_cl 11068ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_dl 11078ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_gdbm 11088ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_gl 11098ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_gzip 11108ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_imgfile 11118ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_linuxaudiodev 11128ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_macfs 11138ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_macostools 11148ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_nis 11158ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_ossaudiodev 11168ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_sunaudiodev 11178ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_tcl 11188ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_winreg 11198ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_winsound 11208ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_zipimport 11218ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum test_zlib 11228ee3e5aa9306a00573817e237bed4a482473e818Guido van Rossum """, 1123f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum} 112432d0c1b458bbdda8d8895f5b5bedfb4644f839e7Martin v. Löwis_expectations['freebsd5'] = _expectations['freebsd4'] 1125f64700a512e89c322f46f3cabda3bf58573eda54Hye-Shik Chang_expectations['freebsd6'] = _expectations['freebsd4'] 11264e422817eb1bc5a6a42365001ad45683ae07e559Hye-Shik Chang_expectations['freebsd7'] = _expectations['freebsd4'] 1127f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum 1128b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Petersclass _ExpectedSkips: 1129b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters def __init__(self): 11302a182dbf3f2520ad753792068391775d102b13dfTim Peters import os.path 1131b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters from test import test_socket_ssl 113255b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz from test import test_timeout 11331b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters 11347c7efe90737d4636633127a95a6cab1a55d57cf4Tim Peters self.valid = False 1135de14a30d1d70073d36f207fe432e4adad5178399Tim Peters if sys.platform in _expectations: 1136f73e30c3e3ba6f2779eadf6bf4c21c6bf3e4c075Guido van Rossum s = _expectations[sys.platform] 1137a690a9967e715663b7a421c9ebdad91381cdf1e4Raymond Hettinger self.expected = set(s.split()) 11381b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters 1139f21a5f773964d34c7b6deb7e3d753fae2b9c70e2Gregory P. Smith # this isn't a regularly run unit test, it is always skipped 1140f21a5f773964d34c7b6deb7e3d753fae2b9c70e2Gregory P. Smith self.expected.add('test_hashlib_speed') 1141f21a5f773964d34c7b6deb7e3d753fae2b9c70e2Gregory P. Smith 11422a182dbf3f2520ad753792068391775d102b13dfTim Peters if not os.path.supports_unicode_filenames: 11432a182dbf3f2520ad753792068391775d102b13dfTim Peters self.expected.add('test_pep277') 11441b445d3fcfcc06e5360e83b978efdb9b1c980278Tim Peters 1145b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters if test_socket_ssl.skip_expected: 1146b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters self.expected.add('test_socket_ssl') 1147b4ee4eb3b308d55bd0d8d5a1abb2015950934c77Tim Peters 114855b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz if test_timeout.skip_expected: 114955b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz self.expected.add('test_timeout') 115055b61d21d8e8409fbb6ca23421f8a3a5c23f5513Neal Norwitz 1151fba73698240660d9154b6917b87dd333d6fb8284Martin v. Löwis if sys.maxint == 9223372036854775807L: 1152fba73698240660d9154b6917b87dd333d6fb8284Martin v. Löwis self.expected.add('test_rgbimg') 1153fba73698240660d9154b6917b87dd333d6fb8284Martin v. Löwis self.expected.add('test_imageop') 1154fba73698240660d9154b6917b87dd333d6fb8284Martin v. Löwis 11556afc5e02fa775517fa0b6455906a8c203baf9cd2Jack Jansen if not sys.platform in ("mac", "darwin"): 11567035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz MAC_ONLY = ["test_macostools", "test_macfs", "test_aepack", 11577035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz "test_plistlib", "test_scriptpackages"] 11587035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz for skip in MAC_ONLY: 11597035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz self.expected.add(skip) 1160ecd79eb7dbde19ea2adbf2a912caa5b284b477b9Tim Peters 1161ecd79eb7dbde19ea2adbf2a912caa5b284b477b9Tim Peters if sys.platform != "win32": 11627035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz WIN_ONLY = ["test_unicode_file", "test_winreg", 11637035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz "test_winsound"] 11647035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz for skip in WIN_ONLY: 11657035c98c5c0eec7f88fab146e72b2a7e4aaf64a5Neal Norwitz self.expected.add(skip) 1166f2715e076435b74638acb81512c2ee014f75aea2Tim Peters 11677c7efe90737d4636633127a95a6cab1a55d57cf4Tim Peters self.valid = True 1168b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1169b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters def isvalid(self): 1170b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters "Return true iff _ExpectedSkips knows about the current platform." 1171b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters return self.valid 1172b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1173b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters def getexpected(self): 1174b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters """Return set of test names we expect to skip on current platform. 1175b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1176b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters self.isvalid() must be true. 1177b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters """ 1178b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1179b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters assert self.isvalid() 1180b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters return self.expected 1181b5b7b78414e5f1a42ab4205c110626c9cd7a79b9Tim Peters 1182152494aea24669a3d74460fa460a4ed45696bc75Guido van Rossumif __name__ == '__main__': 1183408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # Remove regrtest.py's own directory from the module search path. This 1184408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # prevents relative imports from working, and relative imports will screw 1185408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # up the testing framework. E.g. if both test.test_support and 1186408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # test_support are imported, they will not contain the same globals, and 1187408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # much of the testing framework relies on the globals in the 1188408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw # test.test_support module. 1189408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw mydir = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0]))) 1190408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw i = pathlen = len(sys.path) 1191408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw while i >= 0: 1192408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw i -= 1 1193408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw if os.path.abspath(os.path.normpath(sys.path[i])) == mydir: 1194408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw del sys.path[i] 1195408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw if len(sys.path) == pathlen: 1196408b6d34de2b1a6ba690557def435adce9314184Barry Warsaw print 'Could not find %r in sys.path to remove it' % mydir 119708fca5212528e073600c27c70a34eeef445f393bBarry Warsaw main() 1198