Skip to content

Commit a52edbd

Browse files
committed
more dict tests
1 parent 4cac4df commit a52edbd

File tree

1 file changed

+41
-1
lines changed
  • graalpython/com.oracle.graal.python.test/src/tests

1 file changed

+41
-1
lines changed

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

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -916,4 +916,44 @@ def iterate_and_update(it):
916916
assert_raises(RuntimeError, just_iterate, it)
917917

918918
d = {1:1}
919-
assert_raises(RuntimeError, iterate_and_update, d.items())
919+
assert_raises(RuntimeError, iterate_and_update, d.items())
920+
921+
def test_decorated_method_dict():
922+
def assert_bogus_dict_raises(dm):
923+
raised = False
924+
try:
925+
dm.__dict__ = 'a'
926+
except TypeError as e:
927+
raised = True
928+
assert "__dict__ must be set to a dictionary, not a 'str'" == str(e), "invalid error message"
929+
assert raised
930+
931+
class A:
932+
def f():
933+
pass
934+
935+
cm = classmethod(A.f)
936+
cm.x = 42
937+
assert cm.__dict__ == {'x': 42}
938+
cm.__dict__ = {1:1}
939+
assert cm.__dict__ == {1:1}
940+
941+
sm = staticmethod(A.f)
942+
sm.x = 42
943+
assert sm.__dict__ == {'x': 42}
944+
sm.__dict__ = {1:1}
945+
assert sm.__dict__ == {1:1}
946+
947+
assert_bogus_dict_raises(classmethod(A.f))
948+
assert_bogus_dict_raises(staticmethod(A.f))
949+
950+
def f(): pass
951+
assert_bogus_dict_raises(classmethod(f))
952+
assert_bogus_dict_raises(staticmethod(f))
953+
954+
class A:
955+
def f(self):
956+
def ff(): pass
957+
assert_bogus_dict_raises(classmethod(ff))
958+
assert_bogus_dict_raises(staticmethod(ff))
959+
A().f()

0 commit comments

Comments
 (0)