summaryrefslogtreecommitdiff
path: root/numpy/f2py/tests/test_compile_function.py
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2021-12-05 16:30:05 -0700
committerGitHub <noreply@github.com>2021-12-05 16:30:05 -0700
commitd14d2c359fcbd499b73d254f0c20dd1a884ff9a3 (patch)
tree81edd1df081824acf385c12acafae65c1c381a9e /numpy/f2py/tests/test_compile_function.py
parent1bef412560293e67f9cf8c4e7b20a904c46ce41d (diff)
parent90e20e58eda7547678c6d2a4c121b0317de9c74d (diff)
downloadnumpy-d14d2c359fcbd499b73d254f0c20dd1a884ff9a3.tar.gz
Merge pull request #20479 from HaoZeke/f2pyTestPath
TST,STY: Clean up F2PY tests for pathlib.Path
Diffstat (limited to 'numpy/f2py/tests/test_compile_function.py')
-rw-r--r--numpy/f2py/tests/test_compile_function.py85
1 files changed, 39 insertions, 46 deletions
diff --git a/numpy/f2py/tests/test_compile_function.py b/numpy/f2py/tests/test_compile_function.py
index f76fd6448..e92362d82 100644
--- a/numpy/f2py/tests/test_compile_function.py
+++ b/numpy/f2py/tests/test_compile_function.py
@@ -17,14 +17,13 @@ def setup_module():
if not util.has_c_compiler():
pytest.skip("Needs C compiler")
if not util.has_f77_compiler():
- pytest.skip('Needs FORTRAN 77 compiler')
+ pytest.skip("Needs FORTRAN 77 compiler")
# extra_args can be a list (since gh-11937) or string.
# also test absence of extra_args
-@pytest.mark.parametrize(
- "extra_args", [['--noopt', '--debug'], '--noopt --debug', '']
- )
+@pytest.mark.parametrize("extra_args",
+ [["--noopt", "--debug"], "--noopt --debug", ""])
@pytest.mark.leaks_references(reason="Imported module seems never deleted.")
def test_f2py_init_compile(extra_args):
# flush through the f2py __init__ compile() function code path as a
@@ -33,7 +32,7 @@ def test_f2py_init_compile(extra_args):
# the Fortran 77 syntax requires 6 spaces before any commands, but
# more space may be added/
- fsource = """
+ fsource = """
integer function foo()
foo = 10 + 5
return
@@ -45,7 +44,7 @@ def test_f2py_init_compile(extra_args):
modname = util.get_temp_module_name()
cwd = os.getcwd()
- target = os.path.join(moddir, str(uuid.uuid4()) + '.f')
+ target = os.path.join(moddir, str(uuid.uuid4()) + ".f")
# try running compile() with and without a source_fn provided so
# that the code path where a temporary file for writing Fortran
# source is created is also explored
@@ -54,33 +53,28 @@ def test_f2py_init_compile(extra_args):
# util.py, but don't actually use build_module() because it has
# its own invocation of subprocess that circumvents the
# f2py.compile code block under test
- try:
- os.chdir(moddir)
- ret_val = numpy.f2py.compile(
- fsource,
- modulename=modname,
- extra_args=extra_args,
- source_fn=source_fn
- )
- finally:
- os.chdir(cwd)
-
- # check for compile success return value
- assert_equal(ret_val, 0)
-
- # we are not currently able to import the Python-Fortran
- # interface module on Windows / Appveyor, even though we do get
- # successful compilation on that platform with Python 3.x
- if sys.platform != 'win32':
- # check for sensible result of Fortran function; that means
- # we can import the module name in Python and retrieve the
- # result of the sum operation
- return_check = import_module(modname)
- calc_result = return_check.foo()
- assert_equal(calc_result, 15)
- # Removal from sys.modules, is not as such necessary. Even with
- # removal, the module (dict) stays alive.
- del sys.modules[modname]
+ with util.switchdir(moddir):
+ ret_val = numpy.f2py.compile(fsource,
+ modulename=modname,
+ extra_args=extra_args,
+ source_fn=source_fn)
+
+ # check for compile success return value
+ assert_equal(ret_val, 0)
+
+ # we are not currently able to import the Python-Fortran
+ # interface module on Windows / Appveyor, even though we do get
+ # successful compilation on that platform with Python 3.x
+ if sys.platform != "win32":
+ # check for sensible result of Fortran function; that means
+ # we can import the module name in Python and retrieve the
+ # result of the sum operation
+ return_check = import_module(modname)
+ calc_result = return_check.foo()
+ assert_equal(calc_result, 15)
+ # Removal from sys.modules, is not as such necessary. Even with
+ # removal, the module (dict) stays alive.
+ del sys.modules[modname]
def test_f2py_init_compile_failure():
@@ -99,7 +93,7 @@ def test_f2py_init_compile_bad_cmd():
# downstream NOTE: how bad of an idea is this patching?
try:
temp = sys.executable
- sys.executable = 'does not exist'
+ sys.executable = "does not exist"
# the OSError should take precedence over invalid Fortran
ret_val = numpy.f2py.compile(b"invalid")
@@ -108,18 +102,17 @@ def test_f2py_init_compile_bad_cmd():
sys.executable = temp
-@pytest.mark.parametrize('fsource',
- ['program test_f2py\nend program test_f2py',
- b'program test_f2py\nend program test_f2py',])
+@pytest.mark.parametrize(
+ "fsource",
+ [
+ "program test_f2py\nend program test_f2py",
+ b"program test_f2py\nend program test_f2py",
+ ],
+)
def test_compile_from_strings(tmpdir, fsource):
# Make sure we can compile str and bytes gh-12796
- cwd = os.getcwd()
- try:
- os.chdir(str(tmpdir))
- ret_val = numpy.f2py.compile(
- fsource,
- modulename='test_compile_from_strings',
- extension='.f90')
+ with util.switchdir(tmpdir):
+ ret_val = numpy.f2py.compile(fsource,
+ modulename="test_compile_from_strings",
+ extension=".f90")
assert_equal(ret_val, 0)
- finally:
- os.chdir(cwd)