]> granicus.if.org Git - python/commitdiff
Fixed repr of dictionary views.
authorAlexandre Vassalotti <alexandre@peadrop.com>
Tue, 12 Jan 2010 01:34:43 +0000 (01:34 +0000)
committerAlexandre Vassalotti <alexandre@peadrop.com>
Tue, 12 Jan 2010 01:34:43 +0000 (01:34 +0000)
Lib/test/test_dictviews.py
Objects/dictobject.c

index 8821139eb3d3742822dc7c80c6a0256cfb7a5074..78561b76fe65e2a7eb10963dae71d3cb84f3f2ce 100644 (file)
@@ -72,9 +72,18 @@ class DictSetTest(unittest.TestCase):
     def test_dict_repr(self):
         d = {1: 10, "a": "ABC"}
         self.assertTrue(isinstance(repr(d), str))
-        self.assertTrue(isinstance(repr(d.viewitems()), str))
-        self.assertTrue(isinstance(repr(d.viewkeys()), str))
-        self.assertTrue(isinstance(repr(d.viewvalues()), str))
+        r = repr(d.viewitems())
+        self.assertTrue(isinstance(r, str))
+        self.assertTrue(r == "dict_items([('a', 'ABC'), (1, 10)])" or
+                        r == "dict_items([(1, 10), ('a', 'ABC')])")
+        r = repr(d.viewkeys())
+        self.assertTrue(isinstance(r, str))
+        self.assertTrue(r == "dict_keys(['a', 1])" or
+                        r == "dict_keys([1, 'a'])")
+        r = repr(d.viewvalues())
+        self.assertTrue(isinstance(r, str))
+        self.assertTrue(r == "dict_values(['ABC', 10])" or
+                        r == "dict_values([10, 'ABC'])")
 
 
 def test_main():
index 9f46dfafef4d9fd71503db2f8b49c7b51d4922ee..b20d6f36e9a14420de1e4fc094ac9b1c3c6efdc7 100644 (file)
@@ -2886,7 +2886,8 @@ dictview_repr(dictviewobject *dv)
                return NULL;
 
        seq_str = PyObject_Repr(seq);
-       result = PyString_FromFormat("%s(%s)", Py_TYPE(dv)->tp_name, seq_str);
+       result = PyString_FromFormat("%s(%s)", Py_TYPE(dv)->tp_name,
+                                    PyString_AS_STRING(seq_str));
        Py_DECREF(seq_str);
        Py_DECREF(seq);
        return result;