Skip to content

Commit 87baf75

Browse files
Add tests for deletion of qualname and annotations.
1 parent b48debf commit 87baf75

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

tests/core/test_update_attributes.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,34 @@ def wrapper(wrapped, instance, args, kwargs):
7474
self.assertEqual(function.__qualname__, "override_qualname")
7575
self.assertEqual(instance.__qualname__, "override_qualname")
7676

77+
def test_delete_qualname(self):
78+
79+
@passthru_decorator
80+
def function():
81+
pass
82+
83+
function.__qualname__ = "override_qualname"
84+
85+
self.assertEqual(function.__qualname__, "override_qualname")
86+
87+
self.assertRaises(TypeError, delattr, function, "__qualname__")
88+
89+
def test_delete_qualname_modified_on_original(self):
90+
def function():
91+
pass
92+
93+
def wrapper(wrapped, instance, args, kwargs):
94+
return wrapped(*args, **kwargs)
95+
96+
instance = wrapt.FunctionWrapper(function, wrapper)
97+
98+
instance.__qualname__ = "override_qualname"
99+
100+
self.assertEqual(function.__qualname__, "override_qualname")
101+
self.assertEqual(instance.__qualname__, "override_qualname")
102+
103+
self.assertRaises(TypeError, delattr, instance, "__qualname__")
104+
77105
def test_update_module(self):
78106
@passthru_decorator
79107
def function():
@@ -161,5 +189,40 @@ def wrapper(wrapped, instance, args, kwargs):
161189
self.assertEqual(instance.__annotations__, override_annotations)
162190

163191

192+
def test_delete_annotations(self):
193+
@passthru_decorator
194+
def function():
195+
pass
196+
197+
override_annotations = {"override_annotations": ""}
198+
function.__annotations__ = override_annotations
199+
200+
self.assertEqual(function.__annotations__, override_annotations)
201+
202+
del function.__annotations__
203+
204+
self.assertEqual(function.__annotations__, {})
205+
206+
def test_delete_annotations_modified_on_original(self):
207+
def function():
208+
pass
209+
210+
def wrapper(wrapped, instance, args, kwargs):
211+
return wrapped(*args, **kwargs)
212+
213+
instance = wrapt.FunctionWrapper(function, wrapper)
214+
215+
override_annotations = {"override_annotations": ""}
216+
instance.__annotations__ = override_annotations
217+
218+
self.assertEqual(function.__annotations__, override_annotations)
219+
self.assertEqual(instance.__annotations__, override_annotations)
220+
221+
del instance.__annotations__
222+
223+
self.assertEqual(function.__annotations__, {})
224+
self.assertEqual(instance.__annotations__, {})
225+
226+
164227
if __name__ == "__main__":
165228
unittest.main()

0 commit comments

Comments
 (0)