From cd24ca1ef578924bad8c5c31f8939e64e353c256 Mon Sep 17 00:00:00 2001 From: Rohit Goswami Date: Sun, 28 Nov 2021 15:53:41 +0000 Subject: TST,STY: Use a context manager for F2PY functions --- numpy/f2py/tests/test_compile_function.py | 33 ++++++++++++------------------- 1 file changed, 13 insertions(+), 20 deletions(-) (limited to 'numpy/f2py/tests/test_compile_function.py') diff --git a/numpy/f2py/tests/test_compile_function.py b/numpy/f2py/tests/test_compile_function.py index f76fd6448..33e320731 100644 --- a/numpy/f2py/tests/test_compile_function.py +++ b/numpy/f2py/tests/test_compile_function.py @@ -54,33 +54,30 @@ 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) + with util.switchdir(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) + # 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': + 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) + 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] + del sys.modules[modname] def test_f2py_init_compile_failure(): @@ -113,13 +110,9 @@ def test_f2py_init_compile_bad_cmd(): 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)) + with util.switchdir(tmpdir): ret_val = numpy.f2py.compile( - fsource, - modulename='test_compile_from_strings', - extension='.f90') + fsource, + modulename='test_compile_from_strings', + extension='.f90') assert_equal(ret_val, 0) - finally: - os.chdir(cwd) -- cgit v1.2.1 From e4ca1fbcc96f956708f2deacb6ae1806cd132fe5 Mon Sep 17 00:00:00 2001 From: Rohit Goswami Date: Thu, 2 Dec 2021 21:21:34 +0000 Subject: MAINT: Rework whitespace to pass PR checks Co-authored-by: Charles Harris --- numpy/f2py/tests/test_compile_function.py | 58 +++++++++++++++---------------- 1 file changed, 29 insertions(+), 29 deletions(-) (limited to 'numpy/f2py/tests/test_compile_function.py') diff --git a/numpy/f2py/tests/test_compile_function.py b/numpy/f2py/tests/test_compile_function.py index 33e320731..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 @@ -55,28 +54,26 @@ def test_f2py_init_compile(extra_args): # its own invocation of subprocess that circumvents the # f2py.compile code block under test with util.switchdir(moddir): - ret_val = numpy.f2py.compile( - fsource, - modulename=modname, - extra_args=extra_args, - source_fn=source_fn - ) + 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 + # 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. + # Removal from sys.modules, is not as such necessary. Even with + # removal, the module (dict) stays alive. del sys.modules[modname] @@ -96,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") @@ -105,14 +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 with util.switchdir(tmpdir): - ret_val = numpy.f2py.compile( - fsource, - modulename='test_compile_from_strings', - extension='.f90') + ret_val = numpy.f2py.compile(fsource, + modulename="test_compile_from_strings", + extension=".f90") assert_equal(ret_val, 0) -- cgit v1.2.1