|
From: <pj...@us...> - 2011-03-14 01:51:41
|
Revision: 7228
http://jython.svn.sourceforge.net/jython/?rev=7228&view=rev
Author: pjenvey
Date: 2011-03-14 01:51:34 +0000 (Mon, 14 Mar 2011)
Log Message:
-----------
from:
https://svn.python.org/projects/python/branches/release26-maint/Lib/test/regrtest.py@83687
Modified Paths:
--------------
trunk/jython/Lib/test/regrtest.py
Modified: trunk/jython/Lib/test/regrtest.py
===================================================================
--- trunk/jython/Lib/test/regrtest.py 2011-03-13 18:54:43 UTC (rev 7227)
+++ trunk/jython/Lib/test/regrtest.py 2011-03-14 01:51:34 UTC (rev 7228)
@@ -11,12 +11,10 @@
-v: verbose -- run tests in verbose mode with output to stdout
-w: verbose2 -- re-run failed tests in verbose mode
-q: quiet -- don't print anything except if a test fails
--g: generate -- write the output file for a test instead of comparing it
-x: exclude -- arguments are tests to *exclude*
-s: single -- run only a single test (see below)
+-S: slow -- print the slowest 10 tests
-r: random -- randomize test execution order
--m: memo -- save results to file
--j: junit-xml -- save results as JUnit XML to files in directory
-f: fromfile -- read names of tests to run from a file (see below)
-l: findleaks -- if GC is available detect tests that leak memory
-u: use -- specify which special resource intensive tests to run
@@ -28,14 +26,11 @@
-L: runleaks -- run the leaks(1) command just before exit
-R: huntrleaks -- search for reference leaks (needs debug build, v. slow)
-M: memlimit -- run very large memory-consuming tests
--e: expected -- run only tests that are expected to run and pass
If non-option arguments are present, they are names for tests to run,
unless -x is given, in which case they are names for tests not to run.
If no test names are given, all tests are run.
--v is incompatible with -g and does not compare test output files.
-
-T turns on code coverage tracing with the trace module.
-D specifies the directory where coverage files are put.
@@ -96,6 +91,8 @@
curses - Tests that use curses and will modify the terminal's
state and output modes.
+ lib2to3 - Run the tests for 2to3 (They take a while.)
+
largefile - It is okay to run some test that may create huge
files. These tests can take a long time and may
consume >2GB of disk space temporarily.
@@ -124,15 +121,19 @@
option '-uall,-bsddb'.
"""
-import os
-import sys
+import cStringIO
import getopt
+import os
import random
-import warnings
import re
-import cStringIO
-import traceback
+import sys
import time
+import traceback
+import warnings
+# keep a reference to the ascii module to workaround #7140 bug
+# (see issue #7027)
+import encodings.ascii
+import imp
# I see no other way to suppress these warnings;
# putting them in test_grammar.py has no effect:
@@ -168,7 +169,6 @@
newsoft = min(hard, max(soft, 1024*2048))
resource.setrlimit(resource.RLIMIT_STACK, (newsoft, hard))
-import test as _test
from test import test_support
RESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network', 'bsddb',
@@ -181,11 +181,10 @@
sys.exit(code)
-def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False,
+def main(tests=None, testdir=None, verbose=0, quiet=False,
exclude=False, single=False, randomize=False, fromfile=None,
findleaks=False, use_resources=None, trace=False, coverdir='coverage',
- runleaks=False, huntrleaks=False, verbose2=False, expected=False,
- memo=None, junit_xml=None):
+ runleaks=False, huntrleaks=False, verbose2=False, print_slow=False):
"""Execute a test suite.
This also parses command-line options and modifies its behavior
@@ -202,27 +201,25 @@
command-line will be used. If that's empty, too, then all *.py
files beginning with test_ will be used.
- The other default arguments (verbose, quiet, generate, exclude, single,
- randomize, findleaks, use_resources, trace and coverdir) allow programmers
- calling main() directly to set the values that would normally be set by
- flags on the command line.
+ The other default arguments (verbose, quiet, exclude,
+ single, randomize, findleaks, use_resources, trace, coverdir, and
+ print_slow) allow programmers calling main() directly to set the
+ values that would normally be set by flags on the command line.
"""
test_support.record_original_stdout(sys.stdout)
try:
- opts, args = getopt.getopt(sys.argv[1:], 'hvgqxsrf:lu:t:TD:NLR:wM:em:j:',
- ['help', 'verbose', 'quiet', 'generate',
- 'exclude', 'single', 'random', 'fromfile',
+ opts, args = getopt.getopt(sys.argv[1:], 'hvqxsSrf:lu:t:TD:NLR:wM:',
+ ['help', 'verbose', 'quiet', 'exclude',
+ 'single', 'slow', 'random', 'fromfile',
'findleaks', 'use=', 'threshold=', 'trace',
'coverdir=', 'nocoverdir', 'runleaks',
'huntrleaks=', 'verbose2', 'memlimit=',
- 'expected', 'memo'
])
except getopt.error, msg:
usage(2, msg)
# Defaults
- allran = True
if use_resources is None:
use_resources = []
for o, a in opts:
@@ -235,16 +232,12 @@
elif o in ('-q', '--quiet'):
quiet = True;
verbose = 0
- elif o in ('-g', '--generate'):
- generate = True
elif o in ('-x', '--exclude'):
exclude = True
- allran = False
- elif o in ('-e', '--expected'):
- expected = True
- allran = False
elif o in ('-s', '--single'):
single = True
+ elif o in ('-S', '--slow'):
+ print_slow = True
elif o in ('-r', '--randomize'):
randomize = True
elif o in ('-f', '--fromfile'):
@@ -253,10 +246,6 @@
findleaks = True
elif o in ('-L', '--runleaks'):
runleaks = True
- elif o in ('-m', '--memo'):
- memo = a
- elif o in ('-j', '--junit-xml'):
- junit_xml = a
elif o in ('-t', '--threshold'):
import gc
gc.set_threshold(int(a))
@@ -300,8 +289,10 @@
use_resources.remove(r)
elif r not in use_resources:
use_resources.append(r)
- if generate and verbose:
- usage(2, "-g and -v don't go together!")
+ else:
+ print >>sys.stderr, ("No handler for option {0}. Please "
+ "report this as a bug at http://bugs.python.org.").format(o)
+ sys.exit(1)
if single and fromfile:
usage(2, "-s and -f don't go together!")
@@ -312,8 +303,6 @@
if findleaks:
try:
- if test_support.is_jython:
- raise ImportError()
import gc
except ImportError:
print 'No GC available, disabling findleaks.'
@@ -348,7 +337,6 @@
# Strip .py extensions.
if args:
args = map(removepy, args)
- allran = False
if tests:
tests = map(removepy, tests)
@@ -369,27 +357,24 @@
import trace
tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix],
trace=False, count=True)
+ test_times = []
test_support.verbose = verbose # Tell tests to be moderately quiet
test_support.use_resources = use_resources
- test_support.junit_xml_dir = junit_xml
save_modules = sys.modules.keys()
- skips = _ExpectedSkips()
- failures = _ExpectedFailures()
for test in tests:
- if expected and (test in skips or test in failures):
- continue
if not quiet:
print test
sys.stdout.flush()
if trace:
# If we're tracing code coverage, then we don't exit with status
# if on a false return value from main.
- tracer.runctx('runtest(test, generate, verbose, quiet, testdir)',
+ tracer.runctx('runtest(test, verbose, quiet,'
+ ' test_times, testdir)',
globals=globals(), locals=vars())
else:
try:
- ok = runtest(test, generate, verbose, quiet, testdir,
- huntrleaks, junit_xml)
+ ok = runtest(test, verbose, quiet, test_times,
+ testdir, huntrleaks)
except KeyboardInterrupt:
# print a newline separate from the ^C
print
@@ -417,38 +402,45 @@
for module in sys.modules.keys():
if module not in save_modules and module.startswith("test."):
test_support.unload(module)
- module = module[5:]
- if hasattr(_test, module):
- delattr(_test, module)
- # The lists won't be sorted if running with -r
- good.sort()
- bad.sort()
- skipped.sort()
-
if good and not quiet:
if not bad and not skipped and len(good) > 1:
print "All",
print count(len(good), "test"), "OK."
- if verbose:
- print "CAUTION: stdout isn't compared in verbose mode:"
- print "a test that passes in verbose mode may fail without it."
- surprises = 0
- if skipped and not quiet:
- print count(len(skipped), "test"), "skipped:"
- surprises += countsurprises(skips, skipped, 'skip', 'ran', allran, resource_denieds)
+ if print_slow:
+ test_times.sort(reverse=True)
+ print "10 slowest tests:"
+ for time, test in test_times[:10]:
+ print "%s: %.1fs" % (test, time)
if bad:
print count(len(bad), "test"), "failed:"
- surprises += countsurprises(failures, bad, 'fail', 'passed', allran, resource_denieds)
+ printlist(bad)
+ if skipped and not quiet:
+ print count(len(skipped), "test"), "skipped:"
+ printlist(skipped)
+ e = _ExpectedSkips()
+ plat = sys.platform
+ if e.isvalid():
+ surprise = set(skipped) - e.getexpected() - set(resource_denieds)
+ if surprise:
+ print count(len(surprise), "skip"), \
+ "unexpected on", plat + ":"
+ printlist(surprise)
+ else:
+ print "Those skips are all expected on", plat + "."
+ else:
+ print "Ask someone to teach regrtest.py about which tests are"
+ print "expected to get skipped on", plat + "."
+
if verbose2 and bad:
print "Re-running failed tests in verbose mode"
for test in bad:
print "Re-running test %r in verbose mode" % test
sys.stdout.flush()
try:
- test_support.verbose = 1
- ok = runtest(test, generate, 1, quiet, testdir,
+ test_support.verbose = True
+ ok = runtest(test, True, quiet, test_times, testdir,
huntrleaks)
except KeyboardInterrupt:
# print a newline separate from the ^C
@@ -478,29 +470,32 @@
if runleaks:
os.system("leaks %d" % os.getpid())
- if memo:
- savememo(memo,good,bad,skipped)
+ sys.exit(len(bad) > 0)
- sys.exit(surprises > 0)
-
STDTESTS = [
'test_grammar',
'test_opcodes',
- 'test_operations',
+ 'test_dict',
'test_builtin',
'test_exceptions',
'test_types',
'test_unittest',
'test_doctest',
'test_doctest2',
+ # On 2.6, when a C module like dl or linuxaudiodev is imported by some
+ # test, a DeprecationWarning is raised, but test_py3kwarn can not find
+ # it in the __warningregistry__ of the modules in sys.modules.
+ # C modules raise the warning only once, and since there's no way to
+ # find these warnings, test_py3kwarn is executed first to catch them
+ # before the other modules. This shouldn't affect 2.7+
+ 'test_py3kwarn',
]
NOTTESTS = [
'test_support',
'test_future1',
'test_future2',
- 'test_future3',
]
def findtests(testdir=None, stdtests=STDTESTS, nottests=NOTTESTS):
@@ -516,15 +511,14 @@
tests.sort()
return stdtests + tests
-def runtest(test, generate, verbose, quiet, testdir=None, huntrleaks=False,
- junit_xml=None):
+def runtest(test, verbose, quiet, test_times,
+ testdir=None, huntrleaks=False):
"""Run a single test.
test -- the name of the test
- generate -- if true, generate output, instead of running the test
- and comparing it to a previously created output file
verbose -- if true, print more messages
quiet -- if true, don't print 'skipped' messages (probably redundant)
+ test_times -- a list of (time, test_name) pairs
testdir -- test directory
huntrleaks -- run multiple times to test for leaks; requires a debug
build; a triple corresponding to -R's three arguments
@@ -536,91 +530,61 @@
"""
try:
- return runtest_inner(test, generate, verbose, quiet, testdir,
- huntrleaks, junit_xml)
+ return runtest_inner(test, verbose, quiet, test_times,
+ testdir, huntrleaks)
finally:
cleanup_test_droppings(test, verbose)
-def runtest_inner(test, generate, verbose, quiet,
- testdir=None, huntrleaks=False, junit_xml_dir=None):
+def runtest_inner(test, verbose, quiet, test_times,
+ testdir=None, huntrleaks=False):
test_support.unload(test)
if not testdir:
testdir = findtestdir()
- outputdir = os.path.join(testdir, "output")
- outputfile = os.path.join(outputdir, test)
if verbose:
- cfp = None
+ capture_stdout = None
else:
- cfp = cStringIO.StringIO()
+ capture_stdout = cStringIO.StringIO()
- from test.junit_xml import Tee, write_direct_test
try:
save_stdout = sys.stdout
-
- indirect_test = None
- if junit_xml_dir:
- save_stderr = sys.stderr
- sys.stdout = stdout = Tee(sys.stdout)
- sys.stderr = stderr = Tee(sys.stderr)
try:
- if cfp:
- sys.stdout = cfp
- print test # Output file starts with test name
+ if capture_stdout:
+ sys.stdout = capture_stdout
if test.startswith('test.'):
abstest = test
else:
# Always import it from the test package
abstest = 'test.' + test
- start = time.time()
+ start_time = time.time()
the_package = __import__(abstest, globals(), locals(), [])
the_module = getattr(the_package, test)
- # Most tests run to completion simply as a side-effect of
- # being imported. For the benefit of tests that can't run
- # that way (like test_threaded_import), explicitly invoke
- # their test_main() function (if it exists).
+ # Old tests run to completion simply as a side-effect of
+ # being imported. For tests based on unittest or doctest,
+ # explicitly invoke their test_main() function (if it exists).
indirect_test = getattr(the_module, "test_main", None)
if indirect_test is not None:
indirect_test()
- elif junit_xml_dir:
- write_direct_test(junit_xml_dir, abstest, time.time() - start,
- stdout=stdout.getvalue(),
- stderr=stderr.getvalue())
if huntrleaks:
dash_R(the_module, test, indirect_test, huntrleaks)
+ test_time = time.time() - start_time
+ test_times.append((test_time, test))
finally:
sys.stdout = save_stdout
- if junit_xml_dir:
- sys.stderr = save_stderr
except test_support.ResourceDenied, msg:
if not quiet:
print test, "skipped --", msg
sys.stdout.flush()
- if junit_xml_dir:
- write_direct_test(junit_xml_dir, abstest, time.time() - start,
- 'skipped', sys.exc_info(),
- stdout=stdout.getvalue(),
- stderr=stderr.getvalue())
return -2
except (ImportError, test_support.TestSkipped), msg:
if not quiet:
print test, "skipped --", msg
sys.stdout.flush()
- if junit_xml_dir:
- write_direct_test(junit_xml_dir, abstest, time.time() - start,
- 'skipped', sys.exc_info(),
- stdout=stdout.getvalue(),
- stderr=stderr.getvalue())
return -1
except KeyboardInterrupt:
raise
except test_support.TestFailed, msg:
print "test", test, "failed --", msg
sys.stdout.flush()
- if junit_xml_dir and indirect_test is None:
- write_direct_test(junit_xml_dir, abstest, time.time() - start,
- 'failure', sys.exc_info(),
- stdout=stdout.getvalue(),
- stderr=stderr.getvalue())
return 0
except:
type, value = sys.exc_info()[:2]
@@ -629,42 +593,19 @@
if verbose:
traceback.print_exc(file=sys.stdout)
sys.stdout.flush()
- if junit_xml_dir and indirect_test is None:
- write_direct_test(junit_xml_dir, abstest, time.time() - start,
- 'error', sys.exc_info(),
- stdout=stdout.getvalue(),
- stderr=stderr.getvalue())
return 0
else:
- if not cfp:
+ # Except in verbose mode, tests should not print anything
+ if verbose or huntrleaks:
return 1
- output = cfp.getvalue()
- if generate:
- if output == test + "\n":
- if os.path.exists(outputfile):
- # Write it since it already exists (and the contents
- # may have changed), but let the user know it isn't
- # needed:
- print "output file", outputfile, \
- "is no longer needed; consider removing it"
- else:
- # We don't need it, so don't create it.
- return 1
- fp = open(outputfile, "w")
- fp.write(output)
- fp.close()
+ output = capture_stdout.getvalue()
+ if not output:
return 1
- if os.path.exists(outputfile):
- fp = open(outputfile, "r")
- expected = fp.read()
- fp.close()
- else:
- expected = test + "\n"
- if output == expected or huntrleaks:
- return 1
+ print "test", test, "produced unexpected output:"
+ print "*" * 70
+ print output
+ print "*" * 70
sys.stdout.flush()
- reportdiff(expected, output)
- sys.stdout.flush()
return 0
def cleanup_test_droppings(testname, verbose):
@@ -700,7 +641,7 @@
def dash_R(the_module, test, indirect_test, huntrleaks):
# This code is hackish and inelegant, but it seems to do the job.
- import copy_reg
+ import copy_reg, _abcoll, io
if not hasattr(sys, 'gettotalrefcount'):
raise Exception("Tracking reference leaks requires a debug build "
@@ -710,41 +651,56 @@
fs = warnings.filters[:]
ps = copy_reg.dispatch_table.copy()
pic = sys.path_importer_cache.copy()
+ abcs = {}
+ modules = _abcoll, io
+ for abc in [getattr(mod, a) for mod in modules for a in mod.__all__]:
+ # XXX isinstance(abc, ABCMeta) leads to infinite recursion
+ if not hasattr(abc, '_abc_registry'):
+ continue
+ for obj in abc.__subclasses__() + [abc]:
+ abcs[obj] = obj._abc_registry.copy()
if indirect_test:
def run_the_test():
indirect_test()
else:
def run_the_test():
- reload(the_module)
+ imp.reload(the_module)
deltas = []
nwarmup, ntracked, fname = huntrleaks
repcount = nwarmup + ntracked
print >> sys.stderr, "beginning", repcount, "repetitions"
print >> sys.stderr, ("1234567890"*(repcount//10 + 1))[:repcount]
- dash_R_cleanup(fs, ps, pic)
+ dash_R_cleanup(fs, ps, pic, abcs)
for i in range(repcount):
rc = sys.gettotalrefcount()
run_the_test()
sys.stderr.write('.')
- dash_R_cleanup(fs, ps, pic)
+ dash_R_cleanup(fs, ps, pic, abcs)
if i >= nwarmup:
deltas.append(sys.gettotalrefcount() - rc - 2)
print >> sys.stderr
if any(deltas):
- print >> sys.stderr, test, 'leaked', deltas, 'references'
+ msg = '%s leaked %s references, sum=%s' % (test, deltas, sum(deltas))
+ print >> sys.stderr, msg
refrep = open(fname, "a")
- print >> refrep, test, 'leaked', deltas, 'references'
+ print >> refrep, msg
refrep.close()
-def dash_R_cleanup(fs, ps, pic):
+def dash_R_cleanup(fs, ps, pic, abcs):
import gc, copy_reg
- import _strptime, linecache, dircache
+ import _strptime, linecache
+ dircache = test_support.import_module('dircache', deprecated=True)
import urlparse, urllib, urllib2, mimetypes, doctest
import struct, filecmp
from distutils.dir_util import _path_created
+ # Clear the warnings registry, so they can be displayed again
+ for mod in sys.modules.values():
+ if hasattr(mod, '__warningregistry__'):
+ del mod.__warningregistry__
+
# Restore some original values.
warnings.filters[:] = fs
copy_reg.dispatch_table.clear()
@@ -752,6 +708,15 @@
sys.path_importer_cache.clear()
sys.path_importer_cache.update(pic)
+ # clear type cache
+ sys._clear_type_cache()
+
+ # Clear ABC registries, restoring previously saved ABC registries.
+ for abc, registry in abcs.items():
+ abc._abc_registry = registry.copy()
+ abc._abc_cache.clear()
+ abc._abc_negative_cache.clear()
+
# Clear assorted module caches.
_path_created.clear()
re.purge()
@@ -762,55 +727,13 @@
dircache.reset()
linecache.clearcache()
mimetypes._default_mime_types()
- struct._cache.clear()
filecmp._cache.clear()
+ struct._clearcache()
doctest.master = None
# Collect cyclic trash.
gc.collect()
-def reportdiff(expected, output):
- import difflib
- print "*" * 70
- a = expected.splitlines(1)
- b = output.splitlines(1)
- sm = difflib.SequenceMatcher(a=a, b=b)
- tuples = sm.get_opcodes()
-
- def pair(x0, x1):
- # x0:x1 are 0-based slice indices; convert to 1-based line indices.
- x0 += 1
- if x0 >= x1:
- return "line " + str(x0)
- else:
- return "lines %d-%d" % (x0, x1)
-
- for op, a0, a1, b0, b1 in tuples:
- if op == 'equal':
- pass
-
- elif op == 'delete':
- print "***", pair(a0, a1), "of expected output missing:"
- for line in a[a0:a1]:
- print "-", line,
-
- elif op == 'replace':
- print "*** mismatch between", pair(a0, a1), "of expected", \
- "output and", pair(b0, b1), "of actual output:"
- for line in difflib.ndiff(a[a0:a1], b[b0:b1]):
- print line,
-
- elif op == 'insert':
- print "***", pair(b0, b1), "of actual output doesn't appear", \
- "in expected output after line", str(a1)+":"
- for line in b[b0:b1]:
- print "+", line,
-
- else:
- print "get_opcodes() returned bad tuple?!?!", (op, a0, a1, b0, b1)
-
- print "*" * 70
-
def findtestdir():
if __name__ == '__main__':
file = sys.argv[0]
@@ -840,26 +763,10 @@
from textwrap import fill
blanks = ' ' * indent
- print fill(' '.join(map(str, sorted(x))), width,
+ # Print the sorted list: 'x' may be a '--random' list or a set()
+ print fill(' '.join(str(elt) for elt in sorted(x)), width,
initial_indent=blanks, subsequent_indent=blanks)
-def countsurprises(expected, actual, action, antiaction, allran, resource_denieds):
- """returns the number of items in actual that aren't in expected."""
- printlist(actual)
- if not expected.isvalid():
- print "Ask someone to teach regrtest.py about which tests are"
- print "expected to %s on %s." % (action, sys.platform)
- return 1#Surprising not to know what to expect....
- good_surprise = expected.getexpected() - set(actual)
- if allran and good_surprise:
- print count(len(good_surprise), 'test'), antiaction, 'unexpectedly:'
- printlist(good_surprise)
- bad_surprise = set(actual) - expected.getexpected() - set(resource_denieds)
- if bad_surprise:
- print count(len(bad_surprise), action), "unexpected:"
- printlist(bad_surprise)
- return len(bad_surprise)
-
# Map sys.platform to a string containing the basenames of tests
# expected to be skipped on that platform.
#
@@ -873,17 +780,16 @@
# test_timeout
# Controlled by test_timeout.skip_expected. Requires the network
# resource and a socket module.
+#
+# Tests that are expected to be skipped everywhere except on one platform
+# are also handled separately.
_expectations = {
'win32':
"""
test__locale
- test_applesingle
- test_al
test_bsddb185
test_bsddb3
- test_cd
- test_cl
test_commands
test_crypt
test_curses
@@ -891,24 +797,22 @@
test_dl
test_fcntl
test_fork1
+ test_epoll
test_gdbm
- test_gl
test_grp
- test_imgfile
test_ioctl
test_largefile
- test_linuxaudiodev
+ test_kqueue
test_mhlib
- test_nis
test_openpty
test_ossaudiodev
+ test_pipes
test_poll
test_posix
test_pty
test_pwd
test_resource
test_signal
- test_sunaudiodev
test_threadsignals
test_timing
test_wait3
@@ -916,34 +820,20 @@
""",
'linux2':
"""
- test_al
- test_applesingle
test_bsddb185
- test_cd
- test_cl
test_curses
test_dl
- test_gl
- test_imgfile
test_largefile
- test_linuxaudiodev
- test_nis
- test_ntpath
+ test_kqueue
test_ossaudiodev
- test_sqlite
- test_startfile
- test_sunaudiodev
""",
'mac':
"""
- test_al
test_atexit
test_bsddb
test_bsddb185
test_bsddb3
test_bz2
- test_cd
- test_cl
test_commands
test_crypt
test_curses
@@ -951,16 +841,13 @@
test_dl
test_fcntl
test_fork1
- test_gl
+ test_epoll
test_grp
test_ioctl
- test_imgfile
test_largefile
- test_linuxaudiodev
test_locale
+ test_kqueue
test_mmap
- test_nis
- test_ntpath
test_openpty
test_ossaudiodev
test_poll
@@ -971,88 +858,55 @@
test_pwd
test_resource
test_signal
- test_sqlite
- test_startfile
- test_sunaudiodev
test_sundry
test_tarfile
test_timing
""",
'unixware7':
"""
- test_al
- test_applesingle
test_bsddb
test_bsddb185
- test_cd
- test_cl
test_dl
- test_gl
- test_imgfile
+ test_epoll
test_largefile
- test_linuxaudiodev
+ test_kqueue
test_minidom
- test_nis
- test_ntpath
test_openpty
test_pyexpat
test_sax
- test_startfile
- test_sqlite
- test_sunaudiodev
test_sundry
""",
'openunix8':
"""
- test_al
- test_applesingle
test_bsddb
test_bsddb185
- test_cd
- test_cl
test_dl
- test_gl
- test_imgfile
+ test_epoll
test_largefile
- test_linuxaudiodev
+ test_kqueue
test_minidom
- test_nis
- test_ntpath
test_openpty
test_pyexpat
test_sax
- test_sqlite
- test_startfile
- test_sunaudiodev
test_sundry
""",
'sco_sv3':
"""
- test_al
- test_applesingle
test_asynchat
test_bsddb
test_bsddb185
- test_cd
- test_cl
test_dl
test_fork1
+ test_epoll
test_gettext
- test_gl
- test_imgfile
test_largefile
- test_linuxaudiodev
test_locale
+ test_kqueue
test_minidom
- test_nis
- test_ntpath
test_openpty
test_pyexpat
test_queue
test_sax
- test_sqlite
- test_startfile
- test_sunaudiodev
test_sundry
test_thread
test_threaded_import
@@ -1061,40 +915,30 @@
""",
'riscos':
"""
- test_al
- test_applesingle
test_asynchat
test_atexit
test_bsddb
test_bsddb185
test_bsddb3
- test_cd
- test_cl
test_commands
test_crypt
test_dbm
test_dl
test_fcntl
test_fork1
+ test_epoll
test_gdbm
- test_gl
test_grp
- test_imgfile
test_largefile
- test_linuxaudiodev
test_locale
+ test_kqueue
test_mmap
- test_nis
- test_ntpath
test_openpty
test_poll
test_popen2
test_pty
test_pwd
test_strop
- test_sqlite
- test_startfile
- test_sunaudiodev
test_sundry
test_thread
test_threaded_import
@@ -1105,452 +949,232 @@
'darwin':
"""
test__locale
- test_al
test_bsddb
test_bsddb3
- test_cd
- test_cl
test_curses
+ test_epoll
test_gdbm
- test_gl
- test_imgfile
test_largefile
- test_linuxaudiodev
test_locale
+ test_kqueue
test_minidom
- test_nis
- test_ntpath
test_ossaudiodev
test_poll
- test_sqlite
- test_startfile
- test_sunaudiodev
""",
'sunos5':
"""
- test_al
- test_applesingle
test_bsddb
test_bsddb185
- test_cd
- test_cl
test_curses
test_dbm
+ test_epoll
+ test_kqueue
test_gdbm
- test_gl
test_gzip
- test_imgfile
- test_linuxaudiodev
test_openpty
- test_sqlite
- test_startfile
test_zipfile
test_zlib
""",
'hp-ux11':
"""
- test_al
- test_applesingle
test_bsddb
test_bsddb185
- test_cd
- test_cl
test_curses
test_dl
+ test_epoll
test_gdbm
- test_gl
test_gzip
- test_imgfile
test_largefile
- test_linuxaudiodev
test_locale
+ test_kqueue
test_minidom
- test_nis
- test_ntpath
test_openpty
test_pyexpat
test_sax
- test_sqlite
- test_startfile
- test_sunaudiodev
test_zipfile
test_zlib
""",
'atheos':
"""
- test_al
- test_applesingle
test_bsddb185
- test_cd
- test_cl
test_curses
test_dl
test_gdbm
- test_gl
- test_imgfile
+ test_epoll
test_largefile
- test_linuxaudiodev
test_locale
+ test_kqueue
test_mhlib
test_mmap
- test_nis
test_poll
test_popen2
test_resource
- test_sqlite
- test_startfile
- test_sunaudiodev
""",
'cygwin':
"""
- test_al
- test_applesingle
test_bsddb185
test_bsddb3
- test_cd
- test_cl
test_curses
test_dbm
- test_gl
- test_imgfile
+ test_epoll
test_ioctl
+ test_kqueue
test_largefile
- test_linuxaudiodev
test_locale
- test_nis
test_ossaudiodev
test_socketserver
- test_sqlite
- test_sunaudiodev
""",
'os2emx':
"""
- test_al
- test_applesingle
test_audioop
test_bsddb185
test_bsddb3
- test_cd
- test_cl
test_commands
test_curses
test_dl
- test_gl
- test_imgfile
+ test_epoll
+ test_kqueue
test_largefile
- test_linuxaudiodev
test_mhlib
test_mmap
- test_nis
test_openpty
test_ossaudiodev
test_pty
test_resource
test_signal
- test_sqlite
- test_startfile
- test_sunaudiodev
""",
'freebsd4':
"""
- test_aepack
- test_al
- test_applesingle
test_bsddb
test_bsddb3
- test_cd
- test_cl
+ test_epoll
test_gdbm
- test_gl
- test_imgfile
- test_linuxaudiodev
test_locale
- test_macfs
- test_macostools
- test_nis
test_ossaudiodev
test_pep277
- test_plistlib
test_pty
- test_scriptpackages
test_socket_ssl
test_socketserver
- test_sqlite
- test_startfile
- test_sunaudiodev
test_tcl
test_timeout
- test_unicode_file
test_urllibnet
- test_winreg
- test_winsound
+ test_multiprocessing
""",
'aix5':
"""
- test_aepack
- test_al
- test_applesingle
test_bsddb
test_bsddb185
test_bsddb3
test_bz2
- test_cd
- test_cl
test_dl
+ test_epoll
test_gdbm
- test_gl
test_gzip
- test_imgfile
- test_linuxaudiodev
- test_macfs
- test_macostools
- test_nis
+ test_kqueue
test_ossaudiodev
- test_sqlite
- test_startfile
- test_sunaudiodev
test_tcl
- test_winreg
- test_winsound
test_zipimport
test_zlib
""",
'openbsd3':
"""
- test_aepack
- test_al
- test_applesingle
test_bsddb
test_bsddb3
- test_cd
- test_cl
test_ctypes
test_dl
+ test_epoll
test_gdbm
- test_gl
- test_imgfile
- test_linuxaudiodev
test_locale
- test_macfs
- test_macostools
- test_nis
test_normalization
test_ossaudiodev
test_pep277
- test_plistlib
- test_scriptpackages
test_tcl
- test_sqlite
- test_startfile
- test_sunaudiodev
- test_unicode_file
- test_winreg
- test_winsound
+ test_multiprocessing
""",
'netbsd3':
"""
- test_aepack
- test_al
- test_applesingle
test_bsddb
test_bsddb185
test_bsddb3
- test_cd
- test_cl
test_ctypes
test_curses
test_dl
+ test_epoll
test_gdbm
- test_gl
- test_imgfile
- test_linuxaudiodev
test_locale
- test_macfs
- test_macostools
- test_nis
test_ossaudiodev
test_pep277
- test_sqlite
- test_startfile
- test_sunaudiodev
test_tcl
- test_unicode_file
- test_winreg
- test_winsound
+ test_multiprocessing
""",
- 'java':
- """
- test__locale
- test__rawffi
- test_aepack
- test_al
- test_applesingle
- test_audioop
- test_bsddb
- test_bsddb185
- test_bsddb3
- test_bz2
- test_cProfile
- test_capi
- test_cd
- test_cl
- test_commands
- test_crypt
- test_ctypes
- test_curses
- test_dbm
- test_dl
- test_email_codecs
- test_fcntl
- test_fork1
- test_gdbm
- test_getargs2
- test_gl
- test_hotshot
- test_imageop
- test_imgfile
- test_ioctl
- test_largefile
- test_linuxaudiodev
- test_locale
- test_longexp
- test_macfs
- test_macostools
- test_mmap
- test_nis
- test_normalization
- test_openpty
- test_ossaudiodev
- test_parser
- test_plistlib
- test_poll
- test_pty
- test_resource
- test_rgbimg
- test_scriptpackages
- test_socket_ssl
- test_socketserver
- test_sqlite
- test_startfile
- test_strop
- test_structmembers
- test_sunaudiodev
- test_sundry
- test_symtable
- test_tcl
- test_timeout
- test_unicode_file
- test_wait3
- test_wait4
- test_wave
- test_winreg
- test_winsound
- test_zipfile64
-
- test_gzip
- test_ftplib
- test_logging
- test_poplib
- test_pydoc
- test_queue
- test_smtplib
- test_telnetlib
- """
}
_expectations['freebsd5'] = _expectations['freebsd4']
_expectations['freebsd6'] = _expectations['freebsd4']
_expectations['freebsd7'] = _expectations['freebsd4']
+_expectations['freebsd8'] = _expectations['freebsd4']
-_failures = {
- 'java':
- """
- test_codecencodings_cn
- test_codecencodings_hk
- test_codecencodings_jp
- test_codecencodings_kr
- test_codecencodings_tw
- test_codecmaps_cn
- test_codecmaps_hk
- test_codecmaps_jp
- test_codecmaps_kr
- test_codecmaps_tw
- test_compiler
- test_dis
- test_dummy_threading
- test_eof
- test_frozen
- test_gc
- test_import
- test_iterlen
- test_multibytecodec
- test_multibytecodec_support
- test_peepholer
- test_pyclbr
- test_pyexpat
- test_stringprep
- test_threadsignals
- test_transformer
- test_ucn
- test_unicodedata
- test_zipimport
- """,
-}
-
-_platform = sys.platform
-if _platform[:4] == 'java':
- _platform = 'java'
- if os._name == 'nt':
- # XXX: Omitted for now because it fails so miserably and ruins
- # other tests
- _failures['java'] += '\ntest_mailbox'
- if ' ' in sys.executable:
- # http://bugs.python.org/issue1559298
- _failures['java'] += '\ntest_popen'
-
class _ExpectedSkips:
def __init__(self):
import os.path
- from test import test_socket_ssl
from test import test_timeout
self.valid = False
- if _platform in _expectations:
- s = _expectations[_platform]
+ if sys.platform in _expectations:
+ s = _expectations[sys.platform]
self.expected = set(s.split())
+ # expected to be skipped on every platform, even Linux
+ self.expected.add('test_linuxaudiodev')
+
if not os.path.supports_unicode_filenames:
self.expected.add('test_pep277')
- if test_socket_ssl.skip_expected:
- self.expected.add('test_socket_ssl')
+ try:
+ from test import test_socket_ssl
+ except ImportError:
+ pass
+ else:
+ if test_socket_ssl.skip_expected:
+ self.expected.add('test_socket_ssl')
if test_timeout.skip_expected:
self.expected.add('test_timeout')
if sys.maxint == 9223372036854775807L:
- self.expected.add('test_rgbimg')
self.expected.add('test_imageop')
if not sys.platform in ("mac", "darwin"):
- MAC_ONLY = ["test_macostools", "test_macfs", "test_aepack",
- "test_plistlib", "test_scriptpackages"]
+ MAC_ONLY = ["test_macos", "test_macostools", "test_aepack",
+ "test_plistlib", "test_scriptpackages",
+ "test_applesingle"]
for skip in MAC_ONLY:
self.expected.add(skip)
+ elif len(u'\0'.encode('unicode-internal')) == 4:
+ self.expected.add("test_macostools")
+
if sys.platform != "win32":
+ # test_sqlite is only reliable on Windows where the library
+ # is distributed with Python
WIN_ONLY = ["test_unicode_file", "test_winreg",
- "test_winsound"]
+ "test_winsound", "test_startfile",
+ "test_sqlite"]
for skip in WIN_ONLY:
self.expected.add(skip)
- if test_support.is_jython:
- if os._name != 'posix':
- self.expected.update([
- 'test_grp', 'test_mhlib', 'test_posix', 'test_pwd',
- 'test_signal'])
- if os._name != 'nt':
- self.expected.add('test_nt_paths_jy')
+ if sys.platform != 'irix':
+ IRIX_ONLY = ["test_imageop", "test_al", "test_cd", "test_cl",
+ "test_gl", "test_imgfile"]
+ for skip in IRIX_ONLY:
+ self.expected.add(skip)
+ if sys.platform != 'sunos5':
+ self.expected.add('test_sunaudiodev')
+ self.expected.add('test_nis')
+
+ if not sys.py3kwarning:
+ self.expected.add('test_py3kwarn')
+
self.valid = True
def isvalid(self):
@@ -1566,28 +1190,6 @@
assert self.isvalid()
return self.expected
- def __contains__(self, key):
- return key in self.expected
-
-class _ExpectedFailures(_ExpectedSkips):
- def __init__(self):
- self.valid = False
- if _platform in _failures:
- s = _failures[_platform]
- self.expected = set(s.split())
- self.valid = True
-
-def savememo(memo,good,bad,skipped):
- f = open(memo,'w')
- try:
- for n,l in [('good',good),('bad',bad),('skipped',skipped)]:
- print >>f,"%s = [" % n
- for x in l:
- print >>f," %r," % x
- print >>f," ]"
- finally:
- f.close()
-
if __name__ == '__main__':
# Remove regrtest.py's own directory from the module search path. This
# prevents relative imports from working, and relative imports will screw
@@ -1596,11 +1198,9 @@
# much of the testing framework relies on the globals in the
# test.test_support module.
mydir = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
- i = pathlen = len(sys.path)
+ i = len(sys.path)
while i >= 0:
i -= 1
if os.path.abspath(os.path.normpath(sys.path[i])) == mydir:
del sys.path[i]
- if len(sys.path) == pathlen:
- print 'Could not find %r in sys.path to remove it' % mydir
main()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|