[Python-checkins] r46937 - python/trunk/Lib/test/test_coercion.py

brett.cannon python-checkins at python.org
Wed Jun 14 00:26:17 CEST 2006


Author: brett.cannon
Date: Wed Jun 14 00:26:13 2006
New Revision: 46937

Modified:
   python/trunk/Lib/test/test_coercion.py
Log:
Missed test for rev. 46933; infinite recursion from __coerce__() returning its arguments reversed.


Modified: python/trunk/Lib/test/test_coercion.py
==============================================================================
--- python/trunk/Lib/test/test_coercion.py	(original)
+++ python/trunk/Lib/test/test_coercion.py	Wed Jun 14 00:26:13 2006
@@ -2,7 +2,7 @@
 import sys
 import warnings
 import unittest
-from test.test_support import run_unittest
+from test.test_support import run_unittest, TestFailed
 
 # Fake a number that implements numeric methods through __coerce__
 class CoerceNumber:
@@ -318,6 +318,24 @@
                 return 0
         self.assertEquals(cmp(ClassicWackyComparer(), evil_coercer), 0)
 
+    def test_infinite_rec_classic_classes(self):
+        # if __coerce__() returns its arguments reversed it causes an infinite
+        # recursion for classic classes.
+        class Tester:
+            def __coerce__(self, other):
+                return other, self
+
+        exc = TestFailed("__coerce__() returning its arguments reverse "
+                                "should raise RuntimeError")
+        try:
+            Tester() + 1
+        except (RuntimeError, TypeError):
+            return
+        except:
+            raise exc
+        else:
+            raise exc
+
 def test_main():
     warnings.filterwarnings("ignore",
                             r'complex divmod\(\), // and % are deprecated',


More information about the Python-checkins mailing list