|
|
from os.path import join, sep, dirname |
|
|
|
|
|
import pytest |
|
|
|
|
|
from numpy.distutils.misc_util import ( |
|
|
appendpath, minrelpath, gpaths, get_shared_lib_extension, get_info |
|
|
) |
|
|
from numpy.testing import ( |
|
|
assert_, assert_equal, IS_EDITABLE |
|
|
) |
|
|
|
|
|
ajoin = lambda *paths: join(*((sep,)+paths)) |
|
|
|
|
|
class TestAppendpath: |
|
|
|
|
|
def test_1(self): |
|
|
assert_equal(appendpath('prefix', 'name'), join('prefix', 'name')) |
|
|
assert_equal(appendpath('/prefix', 'name'), ajoin('prefix', 'name')) |
|
|
assert_equal(appendpath('/prefix', '/name'), ajoin('prefix', 'name')) |
|
|
assert_equal(appendpath('prefix', '/name'), join('prefix', 'name')) |
|
|
|
|
|
def test_2(self): |
|
|
assert_equal(appendpath('prefix/sub', 'name'), |
|
|
join('prefix', 'sub', 'name')) |
|
|
assert_equal(appendpath('prefix/sub', 'sup/name'), |
|
|
join('prefix', 'sub', 'sup', 'name')) |
|
|
assert_equal(appendpath('/prefix/sub', '/prefix/name'), |
|
|
ajoin('prefix', 'sub', 'name')) |
|
|
|
|
|
def test_3(self): |
|
|
assert_equal(appendpath('/prefix/sub', '/prefix/sup/name'), |
|
|
ajoin('prefix', 'sub', 'sup', 'name')) |
|
|
assert_equal(appendpath('/prefix/sub/sub2', '/prefix/sup/sup2/name'), |
|
|
ajoin('prefix', 'sub', 'sub2', 'sup', 'sup2', 'name')) |
|
|
assert_equal(appendpath('/prefix/sub/sub2', '/prefix/sub/sup/name'), |
|
|
ajoin('prefix', 'sub', 'sub2', 'sup', 'name')) |
|
|
|
|
|
class TestMinrelpath: |
|
|
|
|
|
def test_1(self): |
|
|
n = lambda path: path.replace('/', sep) |
|
|
assert_equal(minrelpath(n('aa/bb')), n('aa/bb')) |
|
|
assert_equal(minrelpath('..'), '..') |
|
|
assert_equal(minrelpath(n('aa/..')), '') |
|
|
assert_equal(minrelpath(n('aa/../bb')), 'bb') |
|
|
assert_equal(minrelpath(n('aa/bb/..')), 'aa') |
|
|
assert_equal(minrelpath(n('aa/bb/../..')), '') |
|
|
assert_equal(minrelpath(n('aa/bb/../cc/../dd')), n('aa/dd')) |
|
|
assert_equal(minrelpath(n('.././..')), n('../..')) |
|
|
assert_equal(minrelpath(n('aa/bb/.././../dd')), n('dd')) |
|
|
|
|
|
class TestGpaths: |
|
|
|
|
|
def test_gpaths(self): |
|
|
local_path = minrelpath(join(dirname(__file__), '..')) |
|
|
ls = gpaths('command/*.py', local_path) |
|
|
assert_(join(local_path, 'command', 'build_src.py') in ls, repr(ls)) |
|
|
f = gpaths('system_info.py', local_path) |
|
|
assert_(join(local_path, 'system_info.py') == f[0], repr(f)) |
|
|
|
|
|
class TestSharedExtension: |
|
|
|
|
|
def test_get_shared_lib_extension(self): |
|
|
import sys |
|
|
ext = get_shared_lib_extension(is_python_ext=False) |
|
|
if sys.platform.startswith('linux'): |
|
|
assert_equal(ext, '.so') |
|
|
elif sys.platform.startswith('gnukfreebsd'): |
|
|
assert_equal(ext, '.so') |
|
|
elif sys.platform.startswith('darwin'): |
|
|
assert_equal(ext, '.dylib') |
|
|
elif sys.platform.startswith('win'): |
|
|
assert_equal(ext, '.dll') |
|
|
|
|
|
assert_(get_shared_lib_extension(is_python_ext=True)) |
|
|
|
|
|
|
|
|
@pytest.mark.skipif( |
|
|
IS_EDITABLE, |
|
|
reason="`get_info` .ini lookup method incompatible with editable install" |
|
|
) |
|
|
def test_installed_npymath_ini(): |
|
|
|
|
|
|
|
|
info = get_info('npymath') |
|
|
|
|
|
assert isinstance(info, dict) |
|
|
assert "define_macros" in info |
|
|
|