Skip to content

Commit adfe8cd

Browse files
committed
TST: use C instead of Cython for editable support tests
Cython does not support yet free-threading Python.
1 parent 74737e6 commit adfe8cd

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

tests/packages/complex/extension.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// SPDX-FileCopyrightText: 2024 The meson-python developers
2+
//
3+
// SPDX-License-Identifier: MIT
4+
5+
#include <Python.h>
6+
7+
static PyObject* answer(PyObject* self) {
8+
return PyLong_FromLong(42);
9+
}
10+
11+
static PyMethodDef methods[] = {
12+
{"answer", (PyCFunction) answer, METH_NOARGS, NULL},
13+
{NULL, NULL, 0, NULL},
14+
};
15+
16+
static struct PyModuleDef module = {
17+
PyModuleDef_HEAD_INIT,
18+
"extension",
19+
NULL,
20+
-1,
21+
methods,
22+
};
23+
24+
PyMODINIT_FUNC PyInit_extension(void) {
25+
return PyModule_Create(&module);
26+
}

tests/packages/complex/meson.build

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ install_subdir(
3333
exclude_files: ['more/meson.build', 'more/baz.pyx'],
3434
)
3535

36+
py.extension_module(
37+
'extension',
38+
'extension.c',
39+
install: true,
40+
subdir: 'complex',
41+
)
42+
3643
py.extension_module(
3744
'test',
3845
'test.pyx',

tests/test_editable.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ def test_mesonpy_meta_finder(package_complex, tmp_path):
104104
import complex
105105
assert complex.__spec__.origin == os.fspath(package_complex / 'complex/__init__.py')
106106
assert complex.__file__ == os.fspath(package_complex / 'complex/__init__.py')
107-
import complex.test
108-
assert complex.test.__spec__.origin == os.fspath(tmp_path / f'test{EXT_SUFFIX}')
109-
assert complex.test.answer() == 42
107+
import complex.extension
108+
assert complex.extension.__spec__.origin == os.fspath(tmp_path / f'extension{EXT_SUFFIX}')
109+
assert complex.extension.answer() == 42
110110
import complex.namespace.foo
111111
assert complex.namespace.foo.__spec__.origin == os.fspath(package_complex / 'complex/namespace/foo.py')
112112
assert complex.namespace.foo.foo() == 'foo'
@@ -223,6 +223,7 @@ def test_editable_pkgutils_walk_packages(package_complex, tmp_path):
223223
packages = {m.name for m in pkgutil.walk_packages(complex.__path__, complex.__name__ + '.')}
224224
assert packages == {
225225
'complex.bar',
226+
'complex.extension',
226227
'complex.more',
227228
'complex.more.baz',
228229
'complex.more.move',

0 commit comments

Comments
 (0)