""" Test scripts Test that we can run executable scripts that have been installed with numpy. """ from __future__ import division, print_function, absolute_import import sys import os import pytest from os.path import join as pathjoin, isfile, dirname import subprocess import numpy as np from numpy.compat.py3k import basestring from numpy.testing import assert_, assert_equal is_inplace = isfile(pathjoin(dirname(np.__file__), '..', 'setup.py')) def find_f2py_commands(): if sys.platform == 'win32': exe_dir = dirname(sys.executable) if exe_dir.endswith('Scripts'): # virtualenv return [os.path.join(exe_dir, 'f2py')] else: return [os.path.join(exe_dir, "Scripts", 'f2py')] else: # Three scripts are installed in Unix-like systems: # 'f2py', 'f2py{major}', and 'f2py{major.minor}'. For example, # if installed with python3.7 the scripts would be named # 'f2py', 'f2py3', and 'f2py3.7'. version = sys.version_info major = str(version.major) minor = str(version.minor) return ['f2py', 'f2py' + major, 'f2py' + major + '.' + minor] @pytest.mark.skipif(is_inplace, reason="Cannot test f2py command inplace") @pytest.mark.xfail(reason="Test is unreliable") @pytest.mark.parametrize('f2py_cmd', find_f2py_commands()) def test_f2py(f2py_cmd): # test that we can run f2py script stdout = subprocess.check_output([f2py_cmd, '-v']) assert_equal(stdout.strip(), b'2') def test_pep338(): stdout = subprocess.check_output([sys.executable, '-mnumpy.f2py', '-v']) assert_equal(stdout.strip(), b'2')