summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorChristoph Reiter <reiter.christoph@gmail.com>2021-03-30 07:54:42 +0200
committerChristoph Reiter <reiter.christoph@gmail.com>2021-03-30 08:31:16 +0200
commitc45eec02185b425e353f5fc477b04567d9627fcb (patch)
treed5219203c62ed450fa629900cbb98eae87457892 /tests
parent6c17628365abfcd7d5868f6f812390380c0ad1ec (diff)
downloadpygobject-c45eec02185b425e353f5fc477b04567d9627fcb.tar.gz
Fix regression in marshalling partial() objects
In a4880dbc4575fadc0e3 a special case for partial() was added to handle gtk4 template callbacks. This in turn broken normal usage of partial objects. To work around that add a special marker in the gtk template code for now until we find a better fix. Also adds a test so this doesn't happen again. Fixes #464
Diffstat (limited to 'tests')
-rw-r--r--tests/test_gi.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/test_gi.py b/tests/test_gi.py
index f6552665..5979d5d0 100644
--- a/tests/test_gi.py
+++ b/tests/test_gi.py
@@ -1692,6 +1692,22 @@ class TestGClosure(unittest.TestCase):
def test_in(self):
GIMarshallingTests.gclosure_in(lambda: 42)
+ def test_in_partial(self):
+ from functools import partial
+
+ called_args = []
+ called_kwargs = {}
+
+ def callback(*args, **kwargs):
+ called_args.extend(args)
+ called_kwargs.update(kwargs)
+ return 42
+
+ func = partial(callback, 1, 2, 3, foo=42)
+ GIMarshallingTests.gclosure_in(func)
+ assert called_args == [1, 2, 3]
+ assert called_kwargs["foo"] == 42
+
def test_pass(self):
# test passing a closure between two C calls
closure = GIMarshallingTests.gclosure_return()