42 lines
1 KiB
Python
42 lines
1 KiB
Python
|
import os
|
||
|
import sys
|
||
|
|
||
|
import pytest
|
||
|
import zmq
|
||
|
|
||
|
@pytest.mark.skipif(
|
||
|
'zmq.backend.cython' not in sys.modules, reason="Requires cython backend"
|
||
|
)
|
||
|
@pytest.mark.skipif(
|
||
|
sys.platform.startswith('win'), reason="Don't try runtime Cython on Windows"
|
||
|
)
|
||
|
@pytest.mark.parametrize('language_level', [3, 2])
|
||
|
def test_cython(language_level, request, tmpdir):
|
||
|
import pyximport
|
||
|
|
||
|
assert 'zmq.tests.cython_ext' not in sys.modules
|
||
|
|
||
|
importers = pyximport.install(
|
||
|
setup_args=dict(include_dirs=zmq.get_includes()),
|
||
|
language_level=language_level,
|
||
|
build_dir=str(tmpdir),
|
||
|
)
|
||
|
|
||
|
cython_ext = None
|
||
|
|
||
|
def unimport():
|
||
|
pyximport.uninstall(*importers)
|
||
|
sys.modules.pop('zmq.tests.cython_ext', None)
|
||
|
|
||
|
request.addfinalizer(unimport)
|
||
|
|
||
|
# this import tests the compilation
|
||
|
from . import cython_ext
|
||
|
assert hasattr(cython_ext, 'send_recv_test')
|
||
|
|
||
|
# call the compiled function
|
||
|
# this shouldn't do much
|
||
|
msg = b'my msg'
|
||
|
received = cython_ext.send_recv_test(msg)
|
||
|
assert received == msg
|