test_npy_pkg_config.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from __future__ import division, absolute_import, print_function
  2. import os
  3. from numpy.distutils.npy_pkg_config import read_config, parse_flags
  4. from numpy.testing import temppath, assert_
  5. simple = """\
  6. [meta]
  7. Name = foo
  8. Description = foo lib
  9. Version = 0.1
  10. [default]
  11. cflags = -I/usr/include
  12. libs = -L/usr/lib
  13. """
  14. simple_d = {'cflags': '-I/usr/include', 'libflags': '-L/usr/lib',
  15. 'version': '0.1', 'name': 'foo'}
  16. simple_variable = """\
  17. [meta]
  18. Name = foo
  19. Description = foo lib
  20. Version = 0.1
  21. [variables]
  22. prefix = /foo/bar
  23. libdir = ${prefix}/lib
  24. includedir = ${prefix}/include
  25. [default]
  26. cflags = -I${includedir}
  27. libs = -L${libdir}
  28. """
  29. simple_variable_d = {'cflags': '-I/foo/bar/include', 'libflags': '-L/foo/bar/lib',
  30. 'version': '0.1', 'name': 'foo'}
  31. class TestLibraryInfo(object):
  32. def test_simple(self):
  33. with temppath('foo.ini') as path:
  34. with open(path, 'w') as f:
  35. f.write(simple)
  36. pkg = os.path.splitext(path)[0]
  37. out = read_config(pkg)
  38. assert_(out.cflags() == simple_d['cflags'])
  39. assert_(out.libs() == simple_d['libflags'])
  40. assert_(out.name == simple_d['name'])
  41. assert_(out.version == simple_d['version'])
  42. def test_simple_variable(self):
  43. with temppath('foo.ini') as path:
  44. with open(path, 'w') as f:
  45. f.write(simple_variable)
  46. pkg = os.path.splitext(path)[0]
  47. out = read_config(pkg)
  48. assert_(out.cflags() == simple_variable_d['cflags'])
  49. assert_(out.libs() == simple_variable_d['libflags'])
  50. assert_(out.name == simple_variable_d['name'])
  51. assert_(out.version == simple_variable_d['version'])
  52. out.vars['prefix'] = '/Users/david'
  53. assert_(out.cflags() == '-I/Users/david/include')
  54. class TestParseFlags(object):
  55. def test_simple_cflags(self):
  56. d = parse_flags("-I/usr/include")
  57. assert_(d['include_dirs'] == ['/usr/include'])
  58. d = parse_flags("-I/usr/include -DFOO")
  59. assert_(d['include_dirs'] == ['/usr/include'])
  60. assert_(d['macros'] == ['FOO'])
  61. d = parse_flags("-I /usr/include -DFOO")
  62. assert_(d['include_dirs'] == ['/usr/include'])
  63. assert_(d['macros'] == ['FOO'])
  64. def test_simple_lflags(self):
  65. d = parse_flags("-L/usr/lib -lfoo -L/usr/lib -lbar")
  66. assert_(d['library_dirs'] == ['/usr/lib', '/usr/lib'])
  67. assert_(d['libraries'] == ['foo', 'bar'])
  68. d = parse_flags("-L /usr/lib -lfoo -L/usr/lib -lbar")
  69. assert_(d['library_dirs'] == ['/usr/lib', '/usr/lib'])
  70. assert_(d['libraries'] == ['foo', 'bar'])