Skip to content

Commit c1e20aa

Browse files
authored
gh-131151: Add tests for exceptions raised by descriptors of comparison methods. (#159258)
1 parent 231311c commit c1e20aa

1 file changed

Lines changed: 22 additions & 4 deletions

File tree

‎Lib/test/test_descr.py‎

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2231,10 +2231,22 @@ def some_number(self_, key):
22312231
def swallow(*args): pass
22322232
def format_impl(self, spec):
22332233
return "hello"
2234-
2235-
# It would be nice to have every special method tested here, but I'm
2236-
# only listing the ones I can remember outside of typeobject.c, since it
2237-
# does it right.
2234+
def do_eq(obj):
2235+
return obj == 1
2236+
def do_ne(obj):
2237+
return obj != 1
2238+
def do_lt(obj):
2239+
return obj < 1
2240+
def do_le(obj):
2241+
return obj <= 1
2242+
def do_gt(obj):
2243+
return obj > 1
2244+
def do_ge(obj):
2245+
return obj >= 1
2246+
2247+
# It would be nice to have every special method tested here.
2248+
# gh-131151: the rich comparison operators used to clear any exception
2249+
# raised by a descriptor's __get__.
22382250
specials = [
22392251
("__bytes__", bytes, hello, set(), {}),
22402252
("__reversed__", reversed, empty_seq, set(), {}),
@@ -2255,6 +2267,12 @@ def format_impl(self, spec):
22552267
("__ceil__", math.ceil, zero, set(), {}),
22562268
("__dir__", dir, empty_seq, set(), {}),
22572269
("__round__", round, zero, set(), {}),
2270+
("__eq__", do_eq, return_true, set(), {}),
2271+
("__ne__", do_ne, return_true, set(), {}),
2272+
("__lt__", do_lt, return_true, set(), {}),
2273+
("__le__", do_le, return_true, set(), {}),
2274+
("__gt__", do_gt, return_true, set(), {}),
2275+
("__ge__", do_ge, return_true, set(), {}),
22582276
]
22592277

22602278
class Checker(object):

0 commit comments

Comments
 (0)