("Forward-port" of r46506)
Remove various dependencies on dictionary order in the standard library tests, and one (clearly an oversight, potentially critical) in the standard library itself - base64.py. Remaining open issues: * test_extcall is an output test, messy to make robust * tarfile.py has a potential bug here, but I'm not familiar enough with this code. Filed in as SF bug #1496501. * urllib2.HTTPPasswordMgr() returns a random result if there is more than one matching root path. I'm asking python-dev for clarification...
This commit is contained in:
parent
e9eeab5c05
commit
a3f092751a
|
@ -126,7 +126,9 @@ _b32alphabet = {
|
||||||
8: 'I', 17: 'R', 26: '2',
|
8: 'I', 17: 'R', 26: '2',
|
||||||
}
|
}
|
||||||
|
|
||||||
_b32tab = [v for v in _b32alphabet.values()]
|
_b32tab = _b32alphabet.items()
|
||||||
|
_b32tab.sort()
|
||||||
|
_b32tab = [v for k, v in _b32tab]
|
||||||
_b32rev = dict([(v, long(k)) for k, v in _b32alphabet.items()])
|
_b32rev = dict([(v, long(k)) for k, v in _b32alphabet.items()])
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1056,12 +1056,13 @@ class DocTestRunner:
|
||||||
|
|
||||||
>>> tests = DocTestFinder().find(_TestClass)
|
>>> tests = DocTestFinder().find(_TestClass)
|
||||||
>>> runner = DocTestRunner(verbose=False)
|
>>> runner = DocTestRunner(verbose=False)
|
||||||
|
>>> tests.sort(key = lambda test: test.name)
|
||||||
>>> for test in tests:
|
>>> for test in tests:
|
||||||
... print runner.run(test)
|
... print test.name, '->', runner.run(test)
|
||||||
(0, 2)
|
_TestClass -> (0, 2)
|
||||||
(0, 1)
|
_TestClass.__init__ -> (0, 2)
|
||||||
(0, 2)
|
_TestClass.get -> (0, 2)
|
||||||
(0, 2)
|
_TestClass.square -> (0, 1)
|
||||||
|
|
||||||
The `summarize` method prints a summary of all the test cases that
|
The `summarize` method prints a summary of all the test cases that
|
||||||
have been run by the runner, and returns an aggregated `(f, t)`
|
have been run by the runner, and returns an aggregated `(f, t)`
|
||||||
|
|
|
@ -611,8 +611,10 @@ class Option:
|
||||||
else:
|
else:
|
||||||
setattr(self, attr, None)
|
setattr(self, attr, None)
|
||||||
if attrs:
|
if attrs:
|
||||||
|
attrs = attrs.keys()
|
||||||
|
attrs.sort()
|
||||||
raise OptionError(
|
raise OptionError(
|
||||||
"invalid keyword arguments: %s" % ", ".join(attrs.keys()),
|
"invalid keyword arguments: %s" % ", ".join(attrs),
|
||||||
self)
|
self)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1661,6 +1663,7 @@ def _match_abbrev(s, wordmap):
|
||||||
raise BadOptionError(s)
|
raise BadOptionError(s)
|
||||||
else:
|
else:
|
||||||
# More than one possible completion: ambiguous prefix.
|
# More than one possible completion: ambiguous prefix.
|
||||||
|
possibilities.sort()
|
||||||
raise AmbiguousOptionError(s, possibilities)
|
raise AmbiguousOptionError(s, possibilities)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -875,7 +875,10 @@ Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back
|
||||||
def test_delimiters(self):
|
def test_delimiters(self):
|
||||||
sniffer = csv.Sniffer()
|
sniffer = csv.Sniffer()
|
||||||
dialect = sniffer.sniff(self.sample3)
|
dialect = sniffer.sniff(self.sample3)
|
||||||
self.assertEqual(dialect.delimiter, "0")
|
# given that all three lines in sample3 are equal,
|
||||||
|
# I think that any character could have been 'guessed' as the
|
||||||
|
# delimiter, depending on dictionary order
|
||||||
|
self.assert_(dialect.delimiter in self.sample3)
|
||||||
dialect = sniffer.sniff(self.sample3, delimiters="?,")
|
dialect = sniffer.sniff(self.sample3, delimiters="?,")
|
||||||
self.assertEqual(dialect.delimiter, "?")
|
self.assertEqual(dialect.delimiter, "?")
|
||||||
dialect = sniffer.sniff(self.sample3, delimiters="/,")
|
dialect = sniffer.sniff(self.sample3, delimiters="/,")
|
||||||
|
|
|
@ -766,7 +766,7 @@ Samuele
|
||||||
|
|
||||||
>>> from operator import itemgetter
|
>>> from operator import itemgetter
|
||||||
>>> d = dict(a=1, b=2, c=1, d=2, e=1, f=2, g=3)
|
>>> d = dict(a=1, b=2, c=1, d=2, e=1, f=2, g=3)
|
||||||
>>> di = sorted(d.iteritems(), key=itemgetter(1))
|
>>> di = sorted(sorted(d.iteritems()), key=itemgetter(1))
|
||||||
>>> for k, g in groupby(di, itemgetter(1)):
|
>>> for k, g in groupby(di, itemgetter(1)):
|
||||||
... print k, map(itemgetter(0), g)
|
... print k, map(itemgetter(0), g)
|
||||||
...
|
...
|
||||||
|
|
|
@ -230,7 +230,7 @@ class TestOptionChecks(BaseTest):
|
||||||
|
|
||||||
def test_attr_invalid(self):
|
def test_attr_invalid(self):
|
||||||
self.assertOptionError(
|
self.assertOptionError(
|
||||||
"option -b: invalid keyword arguments: foo, bar",
|
"option -b: invalid keyword arguments: bar, foo",
|
||||||
["-b"], {'foo': None, 'bar': None})
|
["-b"], {'foo': None, 'bar': None})
|
||||||
|
|
||||||
def test_action_invalid(self):
|
def test_action_invalid(self):
|
||||||
|
@ -718,9 +718,8 @@ class TestStandard(BaseTest):
|
||||||
def test_ambiguous_option(self):
|
def test_ambiguous_option(self):
|
||||||
self.parser.add_option("--foz", action="store",
|
self.parser.add_option("--foz", action="store",
|
||||||
type="string", dest="foo")
|
type="string", dest="foo")
|
||||||
possibilities = ", ".join({"--foz": None, "--foo": None}.keys())
|
|
||||||
self.assertParseFail(["--f=bar"],
|
self.assertParseFail(["--f=bar"],
|
||||||
"ambiguous option: --f (%s?)" % possibilities)
|
"ambiguous option: --f (--foo, --foz?)")
|
||||||
|
|
||||||
|
|
||||||
def test_short_and_long_option_split(self):
|
def test_short_and_long_option_split(self):
|
||||||
|
@ -1537,10 +1536,9 @@ class TestMatchAbbrev(BaseTest):
|
||||||
def test_match_abbrev_error(self):
|
def test_match_abbrev_error(self):
|
||||||
s = "--f"
|
s = "--f"
|
||||||
wordmap = {"--foz": None, "--foo": None, "--fie": None}
|
wordmap = {"--foz": None, "--foo": None, "--fie": None}
|
||||||
possibilities = ", ".join(wordmap.keys())
|
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
_match_abbrev, (s, wordmap), None,
|
_match_abbrev, (s, wordmap), None,
|
||||||
BadOptionError, "ambiguous option: --f (%s?)" % possibilities)
|
BadOptionError, "ambiguous option: --f (--fie, --foo, --foz?)")
|
||||||
|
|
||||||
|
|
||||||
class TestParseNumber(BaseTest):
|
class TestParseNumber(BaseTest):
|
||||||
|
|
|
@ -560,6 +560,7 @@ class HandlerTests(unittest.TestCase):
|
||||||
self.method = method
|
self.method = method
|
||||||
self.selector = url
|
self.selector = url
|
||||||
self.req_headers += headers.items()
|
self.req_headers += headers.items()
|
||||||
|
self.req_headers.sort()
|
||||||
if body:
|
if body:
|
||||||
self.data = body
|
self.data = body
|
||||||
if self.raise_on_endheaders:
|
if self.raise_on_endheaders:
|
||||||
|
|
|
@ -1053,8 +1053,8 @@ libreftest = """ Doctest for examples in the library reference: libweakref.tex
|
||||||
...
|
...
|
||||||
>>> obj = Dict(red=1, green=2, blue=3) # this object is weak referencable
|
>>> obj = Dict(red=1, green=2, blue=3) # this object is weak referencable
|
||||||
>>> r = weakref.ref(obj)
|
>>> r = weakref.ref(obj)
|
||||||
>>> print r()
|
>>> print r() is obj
|
||||||
{'blue': 3, 'green': 2, 'red': 1}
|
True
|
||||||
|
|
||||||
>>> import weakref
|
>>> import weakref
|
||||||
>>> class Object:
|
>>> class Object:
|
||||||
|
|
Loading…
Reference in New Issue