Skip to content

Commit f8f9279

Browse files
committed
[GR-23218] Make test_descr pass - test_special_method_lookup.
PullRequest: graalpython/1317
2 parents 00ead38 + dda3f94 commit f8f9279

File tree

26 files changed

+258
-334
lines changed

26 files changed

+258
-334
lines changed

graalpython/com.oracle.graal.python.test/src/tests/test_bytes.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,34 @@ def test_bytes_mod():
722722
raised = True
723723
assert raised
724724

725+
def test__bytes__():
726+
class C: pass
727+
setattr(C, "__bytes__", bytes)
728+
assert bytes(C()) == b''
729+
730+
class C(int): pass
731+
setattr(C, "__bytes__", bytes)
732+
assert bytes(C()) == b''
733+
assert bytes(C(1)) == b''
734+
735+
setattr(C, "__bytes__", complex)
736+
raised = False
737+
try:
738+
bytes(C(1))
739+
except(TypeError):
740+
raised = True
741+
assert raised
742+
743+
def b(o):
744+
return b'abc'
745+
746+
class BA(bytearray): pass
747+
setattr(BA, "__bytes__", b)
748+
assert bytes(BA(b'cde')) == b'abc'
749+
750+
class BAA(BA): pass
751+
assert bytes(BAA(b'cde')) == b'abc'
752+
725753
class BaseLikeBytes:
726754

727755
def test_maketrans(self):

graalpython/com.oracle.graal.python.test/src/tests/test_float.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,47 @@ def test___round__(self):
8585
pass
8686
else:
8787
assert False, "rounding with a float should have raised"
88+
89+
class F:
90+
pass
91+
92+
setattr(F, "__round__", round)
93+
try:
94+
round(F())
95+
except TypeError:
96+
pass
97+
else:
98+
assert False, "rounding with a non-float should have raised"
99+
100+
class F(float):
101+
pass
102+
103+
setattr(F, "__round__", round)
104+
try:
105+
round(F(4.2))
106+
except TypeError:
107+
pass
108+
else:
109+
assert False, "rounding with only 1 arg should have raised"
110+
111+
round(F(4.2), 1)
112+
113+
def r(o):
114+
return(42)
115+
116+
setattr(F, "__round__", r)
117+
assert round(F(4.2)) == 42
118+
119+
l = []
120+
def r(arg1, arg2):
121+
l.append(arg1)
122+
l.append(arg2)
123+
return(42)
124+
125+
setattr(F, "__round__", r)
126+
assert round(F(4.2), 2) == 42
127+
assert l[0] == 4.2
128+
assert l[1] == 2
88129

89130
def test_magic_rounding(self):
90131
class C():

graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_descr.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_slots_multiple_inheritance
7878
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_slots_special2
7979
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_slots_trash
80+
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_special_method_lookup
8081
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_special_unbound_method_types
8182
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_specials
8283
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_staticmethods

graalpython/com.oracle.graal.python.test/testData/goldenFiles/AwaitAndAsyncTests/asyncWith01.tast

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,11 @@ ModuleRootNode Name: <module 'asyncWith01'> SourceSection: [0,34]`async def f():
3939
EmptyNode SourceSection: [30,34]`pass`
4040
IntegerLiteralNode SourceSection: [27,28]`1`
4141
Value: 1
42-
LookupInheritedAttributeNode SourceSection: None
43-
LookupAttributeInMRONodeGen SourceSection: None
44-
IsSameTypeNodeGen SourceSection: None
45-
CachedDispatchFirst SourceSection: None
46-
LookupInheritedAttributeNode SourceSection: None
47-
LookupAttributeInMRONodeGen SourceSection: None
48-
IsSameTypeNodeGen SourceSection: None
49-
CachedDispatchFirst SourceSection: None
50-
CallNodeGen SourceSection: None
51-
CallNodeGen SourceSection: None
42+
LookupSpecialMethodNodeGen SourceSection: None
43+
LookupSpecialMethodNodeGen SourceSection: None
44+
CachedDispatchFirst SourceSection: None
45+
CallUnaryMethodNodeGen SourceSection: None
46+
CallQuaternaryMethodNodeGen SourceSection: None
5247
YesNodeGen SourceSection: None
5348
IsBuiltinClassProfile SourceSection: None
5449
CachedDispatchFirst SourceSection: None

graalpython/com.oracle.graal.python.test/testData/goldenFiles/AwaitAndAsyncTests/asyncWith02.tast

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,11 @@ ModuleRootNode Name: <module 'asyncWith02'> SourceSection: [0,47]`async def f():
4545
ReadGlobalOrBuiltinNodeGen SourceSection: [35,36]`c`
4646
Identifier: c
4747
ReadAttributeFromObjectNotTypeNodeGen SourceSection: None
48-
LookupInheritedAttributeNode SourceSection: None
49-
LookupAttributeInMRONodeGen SourceSection: None
50-
IsSameTypeNodeGen SourceSection: None
51-
CachedDispatchFirst SourceSection: None
52-
LookupInheritedAttributeNode SourceSection: None
53-
LookupAttributeInMRONodeGen SourceSection: None
54-
IsSameTypeNodeGen SourceSection: None
55-
CachedDispatchFirst SourceSection: None
56-
CallNodeGen SourceSection: None
57-
CallNodeGen SourceSection: None
48+
LookupSpecialMethodNodeGen SourceSection: None
49+
LookupSpecialMethodNodeGen SourceSection: None
50+
CachedDispatchFirst SourceSection: None
51+
CallUnaryMethodNodeGen SourceSection: None
52+
CallQuaternaryMethodNodeGen SourceSection: None
5853
YesNodeGen SourceSection: None
5954
IsBuiltinClassProfile SourceSection: None
6055
CachedDispatchFirst SourceSection: None
@@ -66,16 +61,11 @@ ModuleRootNode Name: <module 'asyncWith02'> SourceSection: [0,47]`async def f():
6661
ReadGlobalOrBuiltinNodeGen SourceSection: [27,28]`a`
6762
Identifier: a
6863
ReadAttributeFromObjectNotTypeNodeGen SourceSection: None
69-
LookupInheritedAttributeNode SourceSection: None
70-
LookupAttributeInMRONodeGen SourceSection: None
71-
IsSameTypeNodeGen SourceSection: None
72-
CachedDispatchFirst SourceSection: None
73-
LookupInheritedAttributeNode SourceSection: None
74-
LookupAttributeInMRONodeGen SourceSection: None
75-
IsSameTypeNodeGen SourceSection: None
76-
CachedDispatchFirst SourceSection: None
77-
CallNodeGen SourceSection: None
78-
CallNodeGen SourceSection: None
64+
LookupSpecialMethodNodeGen SourceSection: None
65+
LookupSpecialMethodNodeGen SourceSection: None
66+
CachedDispatchFirst SourceSection: None
67+
CallUnaryMethodNodeGen SourceSection: None
68+
CallQuaternaryMethodNodeGen SourceSection: None
7969
YesNodeGen SourceSection: None
8070
IsBuiltinClassProfile SourceSection: None
8171
CachedDispatchFirst SourceSection: None

graalpython/com.oracle.graal.python.test/testData/goldenFiles/BasicTests/with01.tast

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,11 @@ ModuleRootNode Name: <module 'with01'> SourceSection: [0,21]`with A() as a:↵
2020
Identifier: A
2121
IsBuiltinClassProfile SourceSection: None
2222
CachedDispatchFirst SourceSection: None
23-
LookupInheritedAttributeNode SourceSection: None
24-
LookupAttributeInMRONodeGen SourceSection: None
25-
IsSameTypeNodeGen SourceSection: None
26-
CachedDispatchFirst SourceSection: None
27-
LookupInheritedAttributeNode SourceSection: None
28-
LookupAttributeInMRONodeGen SourceSection: None
29-
IsSameTypeNodeGen SourceSection: None
30-
CachedDispatchFirst SourceSection: None
31-
CallNodeGen SourceSection: None
32-
CallNodeGen SourceSection: None
23+
LookupSpecialMethodNodeGen SourceSection: None
24+
LookupSpecialMethodNodeGen SourceSection: None
25+
CachedDispatchFirst SourceSection: None
26+
CallUnaryMethodNodeGen SourceSection: None
27+
CallQuaternaryMethodNodeGen SourceSection: None
3328
YesNodeGen SourceSection: None
3429
IsBuiltinClassProfile SourceSection: None
3530
CachedDispatchFirst SourceSection: None

graalpython/com.oracle.graal.python.test/testData/goldenFiles/BasicTests/with02.tast

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,11 @@ ModuleRootNode Name: <module 'with02'> SourceSection: [0,31]`with A() as a, B()
2121
Identifier: B
2222
IsBuiltinClassProfile SourceSection: None
2323
CachedDispatchFirst SourceSection: None
24-
LookupInheritedAttributeNode SourceSection: None
25-
LookupAttributeInMRONodeGen SourceSection: None
26-
IsSameTypeNodeGen SourceSection: None
27-
CachedDispatchFirst SourceSection: None
28-
LookupInheritedAttributeNode SourceSection: None
29-
LookupAttributeInMRONodeGen SourceSection: None
30-
IsSameTypeNodeGen SourceSection: None
31-
CachedDispatchFirst SourceSection: None
32-
CallNodeGen SourceSection: None
33-
CallNodeGen SourceSection: None
24+
LookupSpecialMethodNodeGen SourceSection: None
25+
LookupSpecialMethodNodeGen SourceSection: None
26+
CachedDispatchFirst SourceSection: None
27+
CallUnaryMethodNodeGen SourceSection: None
28+
CallQuaternaryMethodNodeGen SourceSection: None
3429
YesNodeGen SourceSection: None
3530
IsBuiltinClassProfile SourceSection: None
3631
CachedDispatchFirst SourceSection: None
@@ -43,16 +38,11 @@ ModuleRootNode Name: <module 'with02'> SourceSection: [0,31]`with A() as a, B()
4338
Identifier: A
4439
IsBuiltinClassProfile SourceSection: None
4540
CachedDispatchFirst SourceSection: None
46-
LookupInheritedAttributeNode SourceSection: None
47-
LookupAttributeInMRONodeGen SourceSection: None
48-
IsSameTypeNodeGen SourceSection: None
49-
CachedDispatchFirst SourceSection: None
50-
LookupInheritedAttributeNode SourceSection: None
51-
LookupAttributeInMRONodeGen SourceSection: None
52-
IsSameTypeNodeGen SourceSection: None
53-
CachedDispatchFirst SourceSection: None
54-
CallNodeGen SourceSection: None
55-
CallNodeGen SourceSection: None
41+
LookupSpecialMethodNodeGen SourceSection: None
42+
LookupSpecialMethodNodeGen SourceSection: None
43+
CachedDispatchFirst SourceSection: None
44+
CallUnaryMethodNodeGen SourceSection: None
45+
CallQuaternaryMethodNodeGen SourceSection: None
5646
YesNodeGen SourceSection: None
5747
IsBuiltinClassProfile SourceSection: None
5848
CachedDispatchFirst SourceSection: None

graalpython/com.oracle.graal.python.test/testData/goldenFiles/BasicTests/with03.tast

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,11 @@ ModuleRootNode Name: <module 'with03'> SourceSection: [0,35]`def fn():↵ with
4646
ReadGlobalOrBuiltinNodeGen SourceSection: [17,18]`A`
4747
Identifier: A
4848
ReadAttributeFromObjectNotTypeNodeGen SourceSection: None
49-
LookupInheritedAttributeNode SourceSection: None
50-
LookupAttributeInMRONodeGen SourceSection: None
51-
IsSameTypeNodeGen SourceSection: None
52-
CachedDispatchFirst SourceSection: None
53-
LookupInheritedAttributeNode SourceSection: None
54-
LookupAttributeInMRONodeGen SourceSection: None
55-
IsSameTypeNodeGen SourceSection: None
56-
CachedDispatchFirst SourceSection: None
57-
CallNodeGen SourceSection: None
58-
CallNodeGen SourceSection: None
49+
LookupSpecialMethodNodeGen SourceSection: None
50+
LookupSpecialMethodNodeGen SourceSection: None
51+
CachedDispatchFirst SourceSection: None
52+
CallUnaryMethodNodeGen SourceSection: None
53+
CallQuaternaryMethodNodeGen SourceSection: None
5954
YesNodeGen SourceSection: None
6055
IsBuiltinClassProfile SourceSection: None
6156
CachedDispatchFirst SourceSection: None

graalpython/com.oracle.graal.python.test/testData/goldenFiles/BasicTests/with04.tast

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,11 @@ ModuleRootNode Name: <module 'with04'> SourceSection: [0,45]`def fn():↵ with
4747
ReadGlobalOrBuiltinNodeGen SourceSection: [27,28]`B`
4848
Identifier: B
4949
ReadAttributeFromObjectNotTypeNodeGen SourceSection: None
50-
LookupInheritedAttributeNode SourceSection: None
51-
LookupAttributeInMRONodeGen SourceSection: None
52-
IsSameTypeNodeGen SourceSection: None
53-
CachedDispatchFirst SourceSection: None
54-
LookupInheritedAttributeNode SourceSection: None
55-
LookupAttributeInMRONodeGen SourceSection: None
56-
IsSameTypeNodeGen SourceSection: None
57-
CachedDispatchFirst SourceSection: None
58-
CallNodeGen SourceSection: None
59-
CallNodeGen SourceSection: None
50+
LookupSpecialMethodNodeGen SourceSection: None
51+
LookupSpecialMethodNodeGen SourceSection: None
52+
CachedDispatchFirst SourceSection: None
53+
CallUnaryMethodNodeGen SourceSection: None
54+
CallQuaternaryMethodNodeGen SourceSection: None
6055
YesNodeGen SourceSection: None
6156
IsBuiltinClassProfile SourceSection: None
6257
CachedDispatchFirst SourceSection: None
@@ -70,16 +65,11 @@ ModuleRootNode Name: <module 'with04'> SourceSection: [0,45]`def fn():↵ with
7065
ReadGlobalOrBuiltinNodeGen SourceSection: [17,18]`A`
7166
Identifier: A
7267
ReadAttributeFromObjectNotTypeNodeGen SourceSection: None
73-
LookupInheritedAttributeNode SourceSection: None
74-
LookupAttributeInMRONodeGen SourceSection: None
75-
IsSameTypeNodeGen SourceSection: None
76-
CachedDispatchFirst SourceSection: None
77-
LookupInheritedAttributeNode SourceSection: None
78-
LookupAttributeInMRONodeGen SourceSection: None
79-
IsSameTypeNodeGen SourceSection: None
80-
CachedDispatchFirst SourceSection: None
81-
CallNodeGen SourceSection: None
82-
CallNodeGen SourceSection: None
68+
LookupSpecialMethodNodeGen SourceSection: None
69+
LookupSpecialMethodNodeGen SourceSection: None
70+
CachedDispatchFirst SourceSection: None
71+
CallUnaryMethodNodeGen SourceSection: None
72+
CallQuaternaryMethodNodeGen SourceSection: None
8373
YesNodeGen SourceSection: None
8474
IsBuiltinClassProfile SourceSection: None
8575
CachedDispatchFirst SourceSection: None

graalpython/com.oracle.graal.python.test/testData/goldenFiles/BasicTests/with05.tast

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,11 @@ ModuleRootNode Name: <module 'with05'> SourceSection: [0,36]`def fn():↵ with
4343
Identifier: open
4444
ReadAttributeFromObjectNotTypeNodeGen SourceSection: None
4545
StringLiteralNode SourceSection: [22,25]`'x'`
46-
LookupInheritedAttributeNode SourceSection: None
47-
LookupAttributeInMRONodeGen SourceSection: None
48-
IsSameTypeNodeGen SourceSection: None
49-
CachedDispatchFirst SourceSection: None
50-
LookupInheritedAttributeNode SourceSection: None
51-
LookupAttributeInMRONodeGen SourceSection: None
52-
IsSameTypeNodeGen SourceSection: None
53-
CachedDispatchFirst SourceSection: None
54-
CallNodeGen SourceSection: None
55-
CallNodeGen SourceSection: None
46+
LookupSpecialMethodNodeGen SourceSection: None
47+
LookupSpecialMethodNodeGen SourceSection: None
48+
CachedDispatchFirst SourceSection: None
49+
CallUnaryMethodNodeGen SourceSection: None
50+
CallQuaternaryMethodNodeGen SourceSection: None
5651
YesNodeGen SourceSection: None
5752
IsBuiltinClassProfile SourceSection: None
5853
CachedDispatchFirst SourceSection: None

0 commit comments

Comments
 (0)