49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
![]() |
import importlib
|
||
|
import importlib.metadata
|
||
|
import os
|
||
|
import pathlib
|
||
|
import subprocess
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
import numpy as np
|
||
|
import numpy._core.include
|
||
|
import numpy._core.lib.pkgconfig
|
||
|
from numpy.testing import IS_EDITABLE, IS_INSTALLED, IS_WASM, NUMPY_ROOT
|
||
|
|
||
|
INCLUDE_DIR = NUMPY_ROOT / '_core' / 'include'
|
||
|
PKG_CONFIG_DIR = NUMPY_ROOT / '_core' / 'lib' / 'pkgconfig'
|
||
|
|
||
|
|
||
|
@pytest.mark.skipif(not IS_INSTALLED, reason="`numpy-config` not expected to be installed")
|
||
|
@pytest.mark.skipif(IS_WASM, reason="wasm interpreter cannot start subprocess")
|
||
|
class TestNumpyConfig:
|
||
|
def check_numpyconfig(self, arg):
|
||
|
p = subprocess.run(['numpy-config', arg], capture_output=True, text=True)
|
||
|
p.check_returncode()
|
||
|
return p.stdout.strip()
|
||
|
|
||
|
def test_configtool_version(self):
|
||
|
stdout = self.check_numpyconfig('--version')
|
||
|
assert stdout == np.__version__
|
||
|
|
||
|
def test_configtool_cflags(self):
|
||
|
stdout = self.check_numpyconfig('--cflags')
|
||
|
assert f'-I{os.fspath(INCLUDE_DIR)}' in stdout
|
||
|
|
||
|
def test_configtool_pkgconfigdir(self):
|
||
|
stdout = self.check_numpyconfig('--pkgconfigdir')
|
||
|
assert pathlib.Path(stdout) == PKG_CONFIG_DIR
|
||
|
|
||
|
|
||
|
@pytest.mark.skipif(not IS_INSTALLED, reason="numpy must be installed to check its entrypoints")
|
||
|
def test_pkg_config_entrypoint():
|
||
|
(entrypoint,) = importlib.metadata.entry_points(group='pkg_config', name='numpy')
|
||
|
assert entrypoint.value == numpy._core.lib.pkgconfig.__name__
|
||
|
|
||
|
|
||
|
@pytest.mark.skipif(not IS_INSTALLED, reason="numpy.pc is only available when numpy is installed")
|
||
|
@pytest.mark.skipif(IS_EDITABLE, reason="editable installs don't have a numpy.pc")
|
||
|
def test_pkg_config_config_exists():
|
||
|
assert PKG_CONFIG_DIR.joinpath('numpy.pc').is_file()
|