1
0
Fork 0
mirror of https://github.com/deltachat/deltachat-core.git synced 2025-10-04 10:19:16 +02:00

Add support for the callback in python/cffi

This uses one global event handler function on the C level, as
enforced by CFFI, and caters for registering a per-context event
handeler.  A simple fixture for doing this during tests is also
implemented.
This commit is contained in:
Floris Bruynooghe 2018-07-22 13:46:09 +02:00
parent ee6798ec0e
commit 08689b2a04
4 changed files with 47 additions and 4 deletions

15
python/tests/conftest.py Normal file
View file

@ -0,0 +1,15 @@
import pytest
import deltachat
@pytest.fixture
def register_dc_callback(monkeypatch):
"""Register a callback for a given context.
This is a function-scoped fixture and the function will be
unregisterd automatically on fixture teardown.
"""
def register_dc_callback(ctx, func):
monkeypatch.setitem(deltachat._DC_CALLBACK_MAP, ctx, func)
return register_dc_callback

View file

@ -1,10 +1,17 @@
import pathlib
import pytest
import deltachat
from deltachat import capi
def test_empty_context():
ctx = capi.lib.dc_context_new(capi.ffi.NULL, capi.ffi.NULL, capi.ffi.NULL)
capi.lib.dc_close(ctx)
def test_cb(register_dc_callback):
def cb(ctx, evt, data1, data2):
return 0
ctx = capi.lib.dc_context_new(capi.lib.py_dc_callback,
capi.ffi.NULL, capi.ffi.NULL)
register_dc_callback(ctx, cb)
capi.lib.dc_close(ctx)
assert deltachat._DC_CALLBACK_MAP[ctx] is cb