|
6 | 6 | import os |
7 | 7 | import pathlib |
8 | 8 | import pkgutil |
| 9 | +import re |
| 10 | +import subprocess |
9 | 11 | import sys |
10 | 12 |
|
11 | 13 | from contextlib import redirect_stdout |
|
16 | 18 |
|
17 | 19 | from mesonpy import _editable |
18 | 20 |
|
19 | | -from .test_wheel import EXT_SUFFIX |
| 21 | +from .test_wheel import EXT_SUFFIX, NOGIL_BUILD |
| 22 | + |
| 23 | + |
| 24 | +def find_cython_version(): |
| 25 | + cython_version_str = subprocess.run(['cython', '--version'], check=True, |
| 26 | + stdout=subprocess.PIPE, text=True).stdout |
| 27 | + version_regex = re.compile(r"(\d{1,4}\.\d{1,4}\.?\d{0,4})") |
| 28 | + version_str = version_regex.search(cython_version_str).group(0) |
| 29 | + return tuple(map(int, version_str.split('.'))) |
| 30 | + |
| 31 | +CYTHON_VERSION = find_cython_version() |
20 | 32 |
|
21 | 33 |
|
22 | 34 | def test_walk(package_complex): |
@@ -280,6 +292,8 @@ def test_editable_rebuild(package_purelib_and_platlib, tmp_path, verbose, args): |
280 | 292 | sys.modules.pop('pure', None) |
281 | 293 |
|
282 | 294 |
|
| 295 | +@pytest.mark.skipif(NOGIL_BUILD and CYTHON_VERSION < (3, 1, 0), |
| 296 | + reason='Cython version too old, no free-threaded CPython support') |
283 | 297 | def test_editable_verbose(venv, package_complex, editable_complex, monkeypatch): |
284 | 298 | monkeypatch.setenv('MESONPY_EDITABLE_VERBOSE', '1') |
285 | 299 | venv.pip('install', os.fspath(editable_complex)) |
|
0 commit comments