Skip to content

Commit

Permalink
TST: use C instead of Cython for editable support tests
Browse files Browse the repository at this point in the history
Cython does not support yet free-threading Python.
  • Loading branch information
dnicolodi committed May 13, 2024
1 parent c5c9dfd commit 5823271
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 3 deletions.
26 changes: 26 additions & 0 deletions tests/packages/complex/extension.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// SPDX-FileCopyrightText: 2024 The meson-python developers
//
// SPDX-License-Identifier: MIT

#include <Python.h>

static PyObject* answer(PyObject* self) {
return PyLong_FromLong(42);
}

static PyMethodDef methods[] = {
{"answer", (PyCFunction) answer, METH_NOARGS, NULL},
{NULL, NULL, 0, NULL},
};

static struct PyModuleDef module = {
PyModuleDef_HEAD_INIT,
"extension",
NULL,
-1,
methods,
};

PyMODINIT_FUNC PyInit_extension(void) {
return PyModule_Create(&module);
}
7 changes: 7 additions & 0 deletions tests/packages/complex/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,13 @@ install_subdir(
exclude_files: ['more/meson.build', 'more/baz.pyx'],
)

py.extension_module(
'extension',
'extension.c',
install: true,
subdir: 'complex',
)

py.extension_module(
'test',
'test.pyx',
Expand Down
7 changes: 4 additions & 3 deletions tests/test_editable.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@ def test_mesonpy_meta_finder(package_complex, tmp_path):
import complex
assert complex.__spec__.origin == os.fspath(package_complex / 'complex/__init__.py')
assert complex.__file__ == os.fspath(package_complex / 'complex/__init__.py')
import complex.test
assert complex.test.__spec__.origin == os.fspath(tmp_path / f'test{EXT_SUFFIX}')
assert complex.test.answer() == 42
import complex.extension
assert complex.extension.__spec__.origin == os.fspath(tmp_path / f'extension{EXT_SUFFIX}')
assert complex.extension.answer() == 42
import complex.namespace.foo
assert complex.namespace.foo.__spec__.origin == os.fspath(package_complex / 'complex/namespace/foo.py')
assert complex.namespace.foo.foo() == 'foo'
Expand Down Expand Up @@ -223,6 +223,7 @@ def test_editable_pkgutils_walk_packages(package_complex, tmp_path):
packages = {m.name for m in pkgutil.walk_packages(complex.__path__, complex.__name__ + '.')}
assert packages == {
'complex.bar',
'complex.extension',
'complex.more',
'complex.more.baz',
'complex.more.move',
Expand Down

0 comments on commit 5823271

Please sign in to comment.