Dave Malcolm <dmalc...@redhat.com> added the comment:
On Sat, 2012-01-28 at 23:56 +0000, Terry J. Reedy wrote:
> Terry J. Reedy <tjre...@udel.edu> added the comment:
>
> > I think you should check with randomization enabled, if only to see the
> > nature of the failures and if they are expected.
>
> Including the list of when-enabled expected failures in the release
> notes would help those who compile and test.
Am attaching a patch which fixes various problems that are clearly just
assumptions about dict ordering:
fix-unittests-broken-by-randomization-dmalcolm-2012-01-29-001.patch
json/__init__.py | 4 +++-
test/mapping_tests.py | 2 +-
test/test_descr.py | 12 +++++++++++-
test/test_urllib.py | 4 +++-
tkinter/test/test_ttk/test_functions.py | 2 +-
5 files changed, 19 insertions(+), 5 deletions(-)
Here are the issues that it fixes:
Lib/test/test_descr.py: fix for intermittent failure due to dict repr:
File "Lib/test/test_descr.py", line 4304, in test_repr
self.assertEqual(repr(self.C.__dict__),
'dict_proxy({!r})'.format(dict_))
AssertionError: "dict_proxy({'__module__': 'test.test_descr', '__dict__':
<attribute '__dict__' of 'C' objects>, '__doc__': None, '__weakref__':
<attribute '__weakref__' of 'C' objects>, 'meth': <function meth at
0x5834be0>})"
!= "dict_proxy({'__module__': 'test.test_descr', '__doc__':
None, '__weakref__': <attribute '__weakref__' of 'C' objects>, 'meth':
<function meth at 0x5834be0>, '__dict__': <attribute '__dict__' of 'C'
objects>})"
Lib/json/__init__.py: fix (based on haypo's work) for intermittent failure:
Failed example:
json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',', ':'))
Expected:
'[1,2,3,{"4":5,"6":7}]'
Got:
'[1,2,3,{"6":7,"4":5}]'
Lib/test/mapping_tests.py: fix (based on haypo's work) for intermittent
failures of test_collections, test_dict, and test_userdict seen here:
======================================================================
ERROR: test_update (__main__.GeneralMappingTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "Lib/test/mapping_tests.py", line 207, in test_update
i1 = sorted(d.items())
TypeError: unorderable types: str() < int()
Lib/test/test_urllib.py: fix (based on haypo's work) for intermittent failure:
======================================================================
FAIL: test_nonstring_seq_values (__main__.urlencode_Tests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "Lib/test/test_urllib.py", line 844, in test_nonstring_seq_values
urllib.parse.urlencode({"a": {"a": 1, "b": 1}}, True))
AssertionError: 'a=a&a=b' != 'a=b&a=a'
----------------------------------------------------------------------
Lib/tkinter/test/test_ttk/test_functions.py: fix from haypo's patch for
intermittent failure:
Traceback (most recent call last):
File "Lib/tkinter/test/test_ttk/test_functions.py", line 146, in
test_format_elemcreate
('a', 'b'), a='x', b='y'), ("test a b", ("-a", "x", "-b", "y")))
AssertionError: Tuples differ: ('test a b', ('-b', 'y', '-a',... != ('test
a b', ('-a', 'x', '-b',...
I see two remaining issues (which this patch doesn't address):
test test_module failed -- Traceback (most recent call last):
File "Lib/test/test_module.py", line 79, in test_clear_dict_in_ref_cycle
self.assertEqual(destroyed, [1])
AssertionError: Lists differ: [] != [1]
test_multiprocessing
Exception AssertionError: AssertionError() in <Finalize object, dead> ignored
----------
Added file: http://bugs.python.org/file24366/unnamed
_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue13703>
_______________________________________
diff -r 73dad4940b88 Lib/json/__init__.py
--- a/Lib/json/__init__.py Fri Jan 20 11:23:02 2012 +0000
+++ b/Lib/json/__init__.py Sun Jan 29 20:20:43 2012 -0500
@@ -31,7 +31,9 @@
Compact encoding::
>>> import json
- >>> json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',', ':'))
+ >>> from collections import OrderedDict
+ >>> mydict = OrderedDict([('4', 5), ('6', 7)])
+ >>> json.dumps([1,2,3,mydict], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
Pretty printing::
diff -r 73dad4940b88 Lib/test/mapping_tests.py
--- a/Lib/test/mapping_tests.py Fri Jan 20 11:23:02 2012 +0000
+++ b/Lib/test/mapping_tests.py Sun Jan 29 20:20:43 2012 -0500
@@ -14,7 +14,7 @@
def _reference(self):
"""Return a dictionary of values which are invariant by storage
in the object under test."""
- return {1:2, "key1":"value1", "key2":(1,2,3)}
+ return {"1": "2", "key1":"value1", "key2":(1,2,3)}
def _empty_mapping(self):
"""Return an empty mapping object"""
return self.type2test()
diff -r 73dad4940b88 Lib/test/test_descr.py
--- a/Lib/test/test_descr.py Fri Jan 20 11:23:02 2012 +0000
+++ b/Lib/test/test_descr.py Sun Jan 29 20:20:43 2012 -0500
@@ -4300,8 +4300,18 @@
def test_repr(self):
# Testing dict_proxy.__repr__
+ def sorted_dict_repr(repr_):
+ # Given the repr of a dict, sort the keys
+ assert repr_.startswith('{')
+ assert repr_.endswith('}')
+ kvs = repr_[1:-1].split(', ')
+ return '{' + ', '.join(sorted(kvs)) + '}'
dict_ = {k: v for k, v in self.C.__dict__.items()}
- self.assertEqual(repr(self.C.__dict__), 'dict_proxy({!r})'.format(dict_))
+ repr_ = repr(self.C.__dict__)
+ self.assert_(repr_.startswith('dict_proxy('))
+ self.assert_(repr_.endswith(')'))
+ self.assertEqual(sorted_dict_repr(repr_[len('dict_proxy('):-len(')')]),
+ sorted_dict_repr('{!r}'.format(dict_)))
class PTypesLongInitTest(unittest.TestCase):
diff -r 73dad4940b88 Lib/test/test_urllib.py
--- a/Lib/test/test_urllib.py Fri Jan 20 11:23:02 2012 +0000
+++ b/Lib/test/test_urllib.py Sun Jan 29 20:20:43 2012 -0500
@@ -12,6 +12,7 @@
import sys
import tempfile
import warnings
+import collections
def hexescape(char):
"""Escape char as RFC 2396 specifies"""
@@ -840,8 +841,9 @@
self.assertEqual("a=1&a=2", urllib.parse.urlencode({"a": [1, 2]}, True))
self.assertEqual("a=None&a=a",
urllib.parse.urlencode({"a": [None, "a"]}, True))
+ data = collections.OrderedDict([("a", 1), ("b", 1)])
self.assertEqual("a=a&a=b",
- urllib.parse.urlencode({"a": {"a": 1, "b": 1}}, True))
+ urllib.parse.urlencode({"a": data}, True))
def test_urlencode_encoding(self):
# ASCII encoding. Expect %3F with errors="replace'
diff -r 73dad4940b88 Lib/tkinter/test/test_ttk/test_functions.py
--- a/Lib/tkinter/test/test_ttk/test_functions.py Fri Jan 20 11:23:02 2012 +0000
+++ b/Lib/tkinter/test/test_ttk/test_functions.py Sun Jan 29 20:20:43 2012 -0500
@@ -143,7 +143,7 @@
('a', 'b', 'c')), ("test {a b} c", ()))
# state spec and options
self.assertEqual(ttk._format_elemcreate('image', False, 'test',
- ('a', 'b'), a='x', b='y'), ("test a b", ("-a", "x", "-b", "y")))
+ ('a', 'b'), a='x'), ("test a b", ("-a", "x")))
# format returned values as a tcl script
# state spec with multiple states and an option with a multivalue
self.assertEqual(ttk._format_elemcreate('image', True, 'test',
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com