diff options
author | Armin Rigo <arigo@tunes.org> | 2006-05-28 19:13:17 (GMT) |
---|---|---|
committer | Armin Rigo <arigo@tunes.org> | 2006-05-28 19:13:17 (GMT) |
commit | a3f092751ae5f29957c78a7e86381532629c7fa3 (patch) | |
tree | 27eecd5671e5bbe3654c5630a62d1deb7300e80b /Lib | |
parent | e9eeab5c0539ede73b52f9df9bd4da8346c91741 (diff) | |
download | cpython-a3f092751ae5f29957c78a7e86381532629c7fa3.zip cpython-a3f092751ae5f29957c78a7e86381532629c7fa3.tar.gz cpython-a3f092751ae5f29957c78a7e86381532629c7fa3.tar.bz2 |
("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...
Diffstat (limited to 'Lib')
-rwxr-xr-x | Lib/base64.py | 4 | ||||
-rw-r--r-- | Lib/doctest.py | 11 | ||||
-rw-r--r-- | Lib/optparse.py | 5 | ||||
-rw-r--r-- | Lib/test/test_csv.py | 5 | ||||
-rw-r--r-- | Lib/test/test_itertools.py | 2 | ||||
-rw-r--r-- | Lib/test/test_optparse.py | 8 | ||||
-rw-r--r-- | Lib/test/test_urllib2.py | 1 | ||||
-rw-r--r-- | Lib/test/test_weakref.py | 4 |
8 files changed, 24 insertions, 16 deletions
diff --git a/Lib/base64.py b/Lib/base64.py index 8914acc..c196cd8 100755 --- a/Lib/base64.py +++ b/Lib/base64.py @@ -126,7 +126,9 @@ _b32alphabet = { 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()]) diff --git a/Lib/doctest.py b/Lib/doctest.py index 971ec6c..b87df7c 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -1056,12 +1056,13 @@ class DocTestRunner: >>> tests = DocTestFinder().find(_TestClass) >>> runner = DocTestRunner(verbose=False) + >>> tests.sort(key = lambda test: test.name) >>> for test in tests: - ... print runner.run(test) - (0, 2) - (0, 1) - (0, 2) - (0, 2) + ... print test.name, '->', runner.run(test) + _TestClass -> (0, 2) + _TestClass.__init__ -> (0, 2) + _TestClass.get -> (0, 2) + _TestClass.square -> (0, 1) The `summarize` method prints a summary of all the test cases that have been run by the runner, and returns an aggregated `(f, t)` diff --git a/Lib/optparse.py b/Lib/optparse.py index 9ac987e..6b8f5d1 100644 --- a/Lib/optparse.py +++ b/Lib/optparse.py @@ -611,8 +611,10 @@ class Option: else: setattr(self, attr, None) if attrs: + attrs = attrs.keys() + attrs.sort() raise OptionError( - "invalid keyword arguments: %s" % ", ".join(attrs.keys()), + "invalid keyword arguments: %s" % ", ".join(attrs), self) @@ -1661,6 +1663,7 @@ def _match_abbrev(s, wordmap): raise BadOptionError(s) else: # More than one possible completion: ambiguous prefix. + possibilities.sort() raise AmbiguousOptionError(s, possibilities) diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index 8511a5a..feb6ddf 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -875,7 +875,10 @@ Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back def test_delimiters(self): sniffer = csv.Sniffer() 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="?,") self.assertEqual(dialect.delimiter, "?") dialect = sniffer.sniff(self.sample3, delimiters="/,") diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index 635d156..4b631dd 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -766,7 +766,7 @@ Samuele >>> from operator import itemgetter >>> 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)): ... print k, map(itemgetter(0), g) ... diff --git a/Lib/test/test_optparse.py b/Lib/test/test_optparse.py index 991c06d..79df906 100644 --- a/Lib/test/test_optparse.py +++ b/Lib/test/test_optparse.py @@ -230,7 +230,7 @@ class TestOptionChecks(BaseTest): def test_attr_invalid(self): self.assertOptionError( - "option -b: invalid keyword arguments: foo, bar", + "option -b: invalid keyword arguments: bar, foo", ["-b"], {'foo': None, 'bar': None}) def test_action_invalid(self): @@ -718,9 +718,8 @@ class TestStandard(BaseTest): def test_ambiguous_option(self): self.parser.add_option("--foz", action="store", type="string", dest="foo") - possibilities = ", ".join({"--foz": None, "--foo": None}.keys()) self.assertParseFail(["--f=bar"], - "ambiguous option: --f (%s?)" % possibilities) + "ambiguous option: --f (--foo, --foz?)") def test_short_and_long_option_split(self): @@ -1537,10 +1536,9 @@ class TestMatchAbbrev(BaseTest): def test_match_abbrev_error(self): s = "--f" wordmap = {"--foz": None, "--foo": None, "--fie": None} - possibilities = ", ".join(wordmap.keys()) self.assertRaises( _match_abbrev, (s, wordmap), None, - BadOptionError, "ambiguous option: --f (%s?)" % possibilities) + BadOptionError, "ambiguous option: --f (--fie, --foo, --foz?)") class TestParseNumber(BaseTest): diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py index c8f19bc..9203e37 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -560,6 +560,7 @@ class HandlerTests(unittest.TestCase): self.method = method self.selector = url self.req_headers += headers.items() + self.req_headers.sort() if body: self.data = body if self.raise_on_endheaders: diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index 392e5fa..18ab401 100644 --- a/Lib/test/test_weakref.py +++ b/Lib/test/test_weakref.py @@ -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 >>> r = weakref.ref(obj) ->>> print r() -{'blue': 3, 'green': 2, 'red': 1} +>>> print r() is obj +True >>> import weakref >>> class Object: |