File size: 1,555 Bytes
6370773
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import os
import subprocess
import sysconfig

import pytest
import numpy as np

from numpy.testing import IS_WASM


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()

@pytest.mark.skipif(IS_WASM, reason="wasm interpreter cannot start subprocess")
def test_configtool_version():
    stdout = check_numpyconfig('--version')
    assert stdout == np.__version__

@pytest.mark.skipif(IS_WASM, reason="wasm interpreter cannot start subprocess")
def test_configtool_cflags():
    stdout = check_numpyconfig('--cflags')
    assert stdout.endswith(os.path.join('numpy', '_core', 'include'))

@pytest.mark.skipif(IS_WASM, reason="wasm interpreter cannot start subprocess")
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'))