[Python-checkins] python/dist/src/Lib/test test_enumerate.py, 1.14, 1.15

mwh@users.sourceforge.net mwh at users.sourceforge.net
Tue Jul 12 12:21:22 CEST 2005


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10231/Lib/test

Modified Files:
	test_enumerate.py 
Log Message:
Fix:

[ 1229429 ] missing Py_DECREF in PyObject_CallMethod

Add a test in test_enumerate, which is a bit random, but suffices
(reversed_new calls PyObject_CallMethod under some circumstances).


Index: test_enumerate.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_enumerate.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- test_enumerate.py	29 Sep 2004 11:40:50 -0000	1.14
+++ test_enumerate.py	12 Jul 2005 10:21:19 -0000	1.15
@@ -1,4 +1,5 @@
 import unittest
+import sys
 
 from test import test_support
 
@@ -175,6 +176,25 @@
         self.assertRaises(TypeError, reversed)
         self.assertRaises(TypeError, reversed, [], 'extra')
 
+    def test_bug1229429(self):
+        # this bug was never in reversed, it was in
+        # PyObject_CallMethod, and reversed_new calls that sometimes.
+        if not hasattr(sys, "getrefcount"):
+            return
+        def f():
+            pass
+        r = f.__reversed__ = object()
+        rc = sys.getrefcount(r)
+        for i in range(10):
+            try:
+                reversed(f)
+            except TypeError:
+                pass
+            else:
+                self.fail("non-callable __reversed__ didn't raise!")
+        self.assertEqual(rc, sys.getrefcount(r))
+            
+
 def test_main(verbose=None):
     testclasses = (EnumerateTestCase, SubclassTestCase, TestEmpty, TestBig,
                    TestReversed)



More information about the Python-checkins mailing list