50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
""" Test scripts
 | 
						|
 | 
						|
Test that we can run executable scripts that have been installed with numpy.
 | 
						|
"""
 | 
						|
import os
 | 
						|
import subprocess
 | 
						|
import sys
 | 
						|
from os.path import dirname, isfile
 | 
						|
from os.path import join as pathjoin
 | 
						|
 | 
						|
import pytest
 | 
						|
 | 
						|
import numpy as np
 | 
						|
from numpy.testing import IS_WASM, 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.9 the scripts would be named
 | 
						|
        # 'f2py', 'f2py3', and 'f2py3.9'.
 | 
						|
        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(), np.__version__.encode('ascii'))
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.skipif(IS_WASM, reason="Cannot start subprocess")
 | 
						|
def test_pep338():
 | 
						|
    stdout = subprocess.check_output([sys.executable, '-mnumpy.f2py', '-v'])
 | 
						|
    assert_equal(stdout.strip(), np.__version__.encode('ascii'))
 |