--- numpy/tests/test_configtool.py.orig 2026-04-04 00:20:07 UTC +++ numpy/tests/test_configtool.py @@ -0,0 +1,41 @@ +import os +import subprocess +import sysconfig + +import pytest +import numpy as np + + +is_editable = not bool(np.__path__) +numpy_in_sitepackages = sysconfig.get_path('platlib') in np.__file__ +# We only expect to have a `numpy-config` available if NumPy was installed via +# a build frontend (and not `spin` for example) +if not (numpy_in_sitepackages or is_editable): + pytest.skip("`numpy-config` not expected to be installed", + allow_module_level=True) + + +def check_numpyconfig(arg): + p = subprocess.run(['numpy-config', arg], capture_output=True, text=True) + p.check_returncode() + return p.stdout.strip() + + +def test_configtool_version(): + stdout = check_numpyconfig('--version') + assert stdout == np.__version__ + + +def test_configtool_cflags(): + stdout = check_numpyconfig('--cflags') + assert stdout.endswith(os.path.join('numpy', 'core', 'include')) + + +def test_configtool_pkgconfigdir(): + stdout = check_numpyconfig('--pkgconfigdir') + assert stdout.endswith(os.path.join('numpy', 'core', 'lib', 'pkgconfig')) + + if not is_editable: + # Also check that the .pc file actually exists (unless we're using an + # editable install, then it'll be hiding in the build dir) + assert os.path.exists(os.path.join(stdout, 'numpy.pc'))