[Numpy-discussion] How to run unittests at build time?

Sandro Tosi morph@debian....
Wed Sep 21 15:56:29 CDT 2011


Hello,
at (Debian) package build time, it would be really important to run
the tests suite, but I'm not getting how to do that.

The simple approach doesn't work:

>>>
$ PYTHONPATH=build/lib.linux-x86_64-2.6 python -c "import numpy; numpy.test()"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "numpy/__init__.py", line 127, in <module>
    raise ImportError(msg)
ImportError: Error importing numpy: you should not try to import numpy from
        its source directory; please exit the numpy source tree, and relaunch
        your python intepreter from there.
<<<

because '.' is placed first in the sys.path list, so it gets used the
numpy/ dir in . instead the one in build/lib... . Ok, so let's tune
sys.path:

>>>
$ python -c "import sys ; sys.path.insert(0,
'build/lib.linux-x86_64-2.6') ; import numpy; numpy.test()"
Running unit tests for numpy
NumPy version 1.6.1
NumPy is installed in build/lib.linux-x86_64-2.6/numpy
Python version 2.6.7 (r267:88850, Aug  3 2011, 11:33:52) [GCC 4.6.1]
nose version 1.0.0
EEEEEEE
======================================================================
ERROR: Failure: NameError (name 'numeric' is not defined)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/nose/loader.py", line 390, in
loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 39, in
importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 84, in
importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "build/lib.linux-x86_64-2.6/numpy/core/__init__.py", line 30, in <module>
    __all__ += numeric.__all__
NameError: name 'numeric' is not defined

======================================================================
ERROR: Failure: ImportError (cannot import name log)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/nose/loader.py", line 390, in
loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 39, in
importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 86, in
importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "build/lib.linux-x86_64-2.6/numpy/distutils/fcompiler/__init__.py",
line 37, in <module>
    from numpy.distutils import log
ImportError: cannot import name log

======================================================================
ERROR: Failure: NameError (name 'type_check' is not defined)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/nose/loader.py", line 390, in
loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 39, in
importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 84, in
importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "build/lib.linux-x86_64-2.6/numpy/lib/__init__.py", line 23, in <module>
    __all__ += type_check.__all__
NameError: name 'type_check' is not defined

======================================================================
ERROR: Failure: NameError (name 'numeric' is not defined)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/nose/loader.py", line 390, in
loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 39, in
importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 86, in
importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "build/lib.linux-x86_64-2.6/numpy/ma/testutils.py", line 17, in <module>
    import numpy.core.umath as umath
  File "build/lib.linux-x86_64-2.6/numpy/core/__init__.py", line 30, in <module>
    __all__ += numeric.__all__
NameError: name 'numeric' is not defined

======================================================================
ERROR: Failure: NameError (name 'defmatrix' is not defined)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/nose/loader.py", line 390, in
loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 39, in
importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 84, in
importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "build/lib.linux-x86_64-2.6/numpy/matrixlib/__init__.py", line
4, in <module>
    __all__ = defmatrix.__all__
NameError: name 'defmatrix' is not defined

======================================================================
ERROR: Failure: NameError (name 'numeric' is not defined)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/nose/loader.py", line 390, in
loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 39, in
importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 86, in
importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "build/lib.linux-x86_64-2.6/numpy/oldnumeric/__init__.py", line
14, in <module>
    from compat import *
  File "build/lib.linux-x86_64-2.6/numpy/oldnumeric/compat.py", line
13, in <module>
    import numpy.core.multiarray as multiarray
  File "build/lib.linux-x86_64-2.6/numpy/core/__init__.py", line 30, in <module>
    __all__ += numeric.__all__
NameError: name 'numeric' is not defined

======================================================================
ERROR: Failure: NameError (name 'type_check' is not defined)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/nose/loader.py", line 390, in
loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 39, in
importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/pymodules/python2.6/nose/importer.py", line 84, in
importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "build/lib.linux-x86_64-2.6/numpy/polynomial/__init__.py", line
28, in <module>
    from numpy.lib import deprecate
  File "build/lib.linux-x86_64-2.6/numpy/lib/__init__.py", line 23, in <module>
    __all__ += type_check.__all__
NameError: name 'type_check' is not defined

----------------------------------------------------------------------
Ran 7 tests in 0.004s

FAILED (errors=7)
<<<

Not nice either, let's try another way, importing * from numpy:

$ python -c "import sys ; sys.path.insert(0,
'build/lib.linux-x86_64-2.6') ; import numpy; from numpy import * ;
numpy.test()"

same result as above.

So, what's the proper way to run the tests suite at build time?

Thanks in advance,
-- 
Sandro Tosi (aka morph, morpheus, matrixhasu)
My website: http://matrixhasu.altervista.org/
Me at Debian: http://wiki.debian.org/SandroTosi


More information about the NumPy-Discussion mailing list