]> granicus.if.org Git - python/commitdiff
Merged revisions 78886 via svnmerge from
authorVictor Stinner <victor.stinner@haypocalc.com>
Sat, 13 Mar 2010 00:19:17 +0000 (00:19 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Sat, 13 Mar 2010 00:19:17 +0000 (00:19 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78886 | victor.stinner | 2010-03-13 01:13:22 +0100 (sam., 13 mars 2010) | 2 lines

  Issue #7818: set().test_c_api() doesn't expect a set('abc'), modify the set.
........

Lib/test/test_set.py
Objects/setobject.c

index 26977d9257eae70973fb695c4f042aa3fab00f79..194bbffee20e523faac4434317ffcd68dca4769c 100644 (file)
@@ -607,7 +607,7 @@ class TestSet(TestJointOps):
     # C API test only available in a debug build
     if hasattr(set, "test_c_api"):
         def test_c_api(self):
-            self.assertEqual(set('abc').test_c_api(), True)
+            self.assertEqual(set().test_c_api(), True)
 
 class SetSubclass(set):
     pass
index 7ea8e323747cee785c2ad84fb9f462cf59159f93..c3eabf536bbb3bfd54250330f72d25768526cbae 100644 (file)
@@ -2360,11 +2360,25 @@ test_c_api(PySetObject *so)
        PyObject *elem=NULL, *dup=NULL, *t, *f, *dup2, *x;
        PyObject *ob = (PyObject *)so;
        long hash;
+       PyObject *str;
 
-       /* Verify preconditions and exercise type/size checks */
+       /* Verify preconditions */
        assert(PyAnySet_Check(ob));
        assert(PyAnySet_CheckExact(ob));
        assert(!PyFrozenSet_CheckExact(ob));
+
+       /* so.clear(); so |= set("abc"); */
+       str = PyUnicode_FromString("abc");
+       if (str == NULL)
+               return NULL;
+       set_clear_internal(so);
+       if (set_update_internal(so, str) == -1) {
+               Py_DECREF(str);
+               return NULL;
+       }
+       Py_DECREF(str);
+
+       /* Exercise type/size checks */
        assert(PySet_Size(ob) == 3);
        assert(PySet_GET_SIZE(ob) == 3);