From d55516293059693746d0652a5258641320db85de Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Fri, 16 Sep 2005 07:14:21 +0000 Subject: No longer ignore exceptions raised by comparisons during key lookup. Inspired by Armin Rigo's suggestion to do the same with dictionaries. --- Lib/test/test_set.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'Lib/test/test_set.py') diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py index 2ebeff65e3..77df31b622 100644 --- a/Lib/test/test_set.py +++ b/Lib/test/test_set.py @@ -15,6 +15,12 @@ def check_pass_thru(): raise PassThru yield 1 +class BadCmp: + def __hash__(self): + return 1 + def __cmp__(self, other): + raise RuntimeError + class TestJointOps(unittest.TestCase): # Tests common to both set and frozenset @@ -227,6 +233,17 @@ class TestJointOps(unittest.TestCase): f.add(s) f.discard(s) + def test_badcmp(self): + s = self.thetype([BadCmp()]) + # Detect comparison errors during insertion and lookup + self.assertRaises(RuntimeError, self.thetype, [BadCmp(), BadCmp()]) + self.assertRaises(RuntimeError, s.__contains__, BadCmp()) + # Detect errors during mutating operations + if hasattr(s, 'add'): + self.assertRaises(RuntimeError, s.add, BadCmp()) + self.assertRaises(RuntimeError, s.discard, BadCmp()) + self.assertRaises(RuntimeError, s.remove, BadCmp()) + class TestSet(TestJointOps): thetype = set -- cgit v1.2.1