mirror of
https://github.com/bvanroll/college-python-image.git
synced 2025-09-01 21:42:43 +00:00
first commit
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
""" Test scripts
|
||||
|
||||
Test that we can run executable scripts that have been installed with numpy.
|
||||
"""
|
||||
from __future__ import division, print_function, absolute_import
|
||||
|
||||
import os
|
||||
from os.path import join as pathjoin, isfile, dirname, basename
|
||||
import sys
|
||||
from subprocess import Popen, PIPE
|
||||
import numpy as np
|
||||
from numpy.compat.py3k import basestring
|
||||
from nose.tools import assert_equal
|
||||
from numpy.testing import assert_, dec
|
||||
|
||||
is_inplace = isfile(pathjoin(dirname(np.__file__), '..', 'setup.py'))
|
||||
|
||||
|
||||
def run_command(cmd, check_code=True):
|
||||
""" Run command sequence `cmd` returning exit code, stdout, stderr
|
||||
|
||||
Parameters
|
||||
----------
|
||||
cmd : str or sequence
|
||||
string with command name or sequence of strings defining command
|
||||
check_code : {True, False}, optional
|
||||
If True, raise error for non-zero return code
|
||||
|
||||
Returns
|
||||
-------
|
||||
returncode : int
|
||||
return code from execution of `cmd`
|
||||
stdout : bytes (python 3) or str (python 2)
|
||||
stdout from `cmd`
|
||||
stderr : bytes (python 3) or str (python 2)
|
||||
stderr from `cmd`
|
||||
|
||||
Raises
|
||||
------
|
||||
RuntimeError
|
||||
If `check_code` is True, and return code !=0
|
||||
"""
|
||||
cmd = [cmd] if isinstance(cmd, basestring) else list(cmd)
|
||||
if os.name == 'nt':
|
||||
# Quote any arguments with spaces. The quotes delimit the arguments
|
||||
# on Windows, and the arguments might be file paths with spaces.
|
||||
# On Unix the list elements are each separate arguments.
|
||||
cmd = ['"{0}"'.format(c) if ' ' in c else c for c in cmd]
|
||||
proc = Popen(cmd, stdout=PIPE, stderr=PIPE)
|
||||
stdout, stderr = proc.communicate()
|
||||
if proc.poll() is None:
|
||||
proc.terminate()
|
||||
if check_code and proc.returncode != 0:
|
||||
raise RuntimeError('\n'.join(
|
||||
['Command "{0}" failed with',
|
||||
'stdout', '------', '{1}', '',
|
||||
'stderr', '------', '{2}']).format(cmd, stdout, stderr))
|
||||
return proc.returncode, stdout, stderr
|
||||
|
||||
|
||||
@dec.skipif(is_inplace)
|
||||
def test_f2py():
|
||||
# test that we can run f2py script
|
||||
if sys.platform == 'win32':
|
||||
exe_dir = dirname(sys.executable)
|
||||
|
||||
if exe_dir.endswith('Scripts'): # virtualenv
|
||||
f2py_cmd = r"%s\f2py.py" % exe_dir
|
||||
else:
|
||||
f2py_cmd = r"%s\Scripts\f2py.py" % exe_dir
|
||||
|
||||
code, stdout, stderr = run_command([sys.executable, f2py_cmd, '-v'])
|
||||
success = stdout.strip() == b'2'
|
||||
assert_(success, "Warning: f2py not found in path")
|
||||
else:
|
||||
version = sys.version_info
|
||||
major = str(version.major)
|
||||
minor = str(version.minor)
|
||||
|
||||
f2py_cmds = ('f2py', 'f2py' + major, 'f2py' + major + '.' + minor)
|
||||
success = False
|
||||
|
||||
for f2py_cmd in f2py_cmds:
|
||||
try:
|
||||
code, stdout, stderr = run_command([f2py_cmd, '-v'])
|
||||
assert_equal(stdout.strip(), b'2')
|
||||
success = True
|
||||
break
|
||||
except Exception:
|
||||
pass
|
||||
msg = "Warning: neither %s nor %s nor %s found in path" % f2py_cmds
|
||||
assert_(success, msg)
|
Reference in New Issue
Block a user