diff options
author | Christoph Reiter <reiter.christoph@gmail.com> | 2021-03-30 07:54:42 +0200 |
---|---|---|
committer | Christoph Reiter <reiter.christoph@gmail.com> | 2021-03-30 08:31:16 +0200 |
commit | c45eec02185b425e353f5fc477b04567d9627fcb (patch) | |
tree | d5219203c62ed450fa629900cbb98eae87457892 /tests | |
parent | 6c17628365abfcd7d5868f6f812390380c0ad1ec (diff) | |
download | pygobject-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.py | 16 |
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() |