diff --git a/tests/test_editable.py b/tests/test_editable.py index 3121d688b..1936f877f 100644 --- a/tests/test_editable.py +++ b/tests/test_editable.py @@ -6,6 +6,8 @@ import os import pathlib import pkgutil +import re +import subprocess import sys from contextlib import redirect_stdout @@ -16,7 +18,17 @@ from mesonpy import _editable -from .test_wheel import EXT_SUFFIX +from .test_wheel import EXT_SUFFIX, NOGIL_BUILD + + +def find_cython_version(): + cython_version_str = subprocess.run(['cython', '--version'], check=True, + stdout=subprocess.PIPE, text=True).stdout + version_regex = re.compile(r"(\d{1,4}\.\d{1,4}\.?\d{0,4})") + version_str = version_regex.search(cython_version_str).group(0) + return tuple(map(int, version_str.split('.'))) + +CYTHON_VERSION = find_cython_version() def test_walk(package_complex): @@ -280,6 +292,8 @@ def test_editable_rebuild(package_purelib_and_platlib, tmp_path, verbose, args): sys.modules.pop('pure', None) +@pytest.mark.skipif(NOGIL_BUILD and CYTHON_VERSION < (3, 1, 0), + reason='Cython version too old, no free-threaded CPython support') def test_editable_verbose(venv, package_complex, editable_complex, monkeypatch): monkeypatch.setenv('MESONPY_EDITABLE_VERBOSE', '1') venv.pip('install', os.fspath(editable_complex))