Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[pytest]
markers =
create: mark a test as create.
remove: mark test as remove.
parallel: mark test as parallel.
75 changes: 38 additions & 37 deletions run_tests.sh
Original file line number Diff line number Diff line change
@@ -1,39 +1,40 @@
#!/bin/bash

pytest tests/test_build.py
if [ $? -ne 0 ] ; then
echo "test_build error" ;
exit 1
fi

pytest tests/test_pyfms.py
if [ $? -ne 0 ] ; then
echo "test_pyfms error" ;
exit 1
fi

mpirun -n 8 python -m pytest tests/py_mpp/test_define_domains.py
if [ $? -ne 0 ] ; then
echo "test_pympp/test_define_domains error" ;
exit 1
fi

mpirun -n 4 python -m pytest tests/py_mpp/test_getset_domains.py
if [ $? -ne 0 ] ; then
echo "test_pympp/test_getset_domains error" ;
exit 1
fi

pytest tests/horiz_interp
if [ $? -ne 0 ] ; then
echo "test_horiz_interp error" ;
exit 1
fi

pytest tests/py_data_override/test_generate_files.py
mpirun -n 6 python -m pytest tests/py_data_override/test_data_override.py
if [ $? -ne 0 ] ; then
echo "test_data_override error" ;
exit 1
fi
rm -rf INPUT input.nml data_table.yaml *logfile* *warnfile*
function create_input() {
pytest -m "create" $1
if [ $? -ne 0 ] ; then exit 1 ; fi
}

function remove_input() {
pytest -m "remove" $1
if [ $? -ne 0 ] ; then exit 1 ; fi
}

function run_test() {
eval $1
if [ $? -ne 0 ] ; then exit 1 ; fi }

run_test "pytest tests/test_build.py"

test="tests/test_pyfms.py"
create_input $test
run_test "pytest -m parallel $test"
remove_input $test

test="tests/py_mpp/test_define_domains.py"
create_input $test
run_test "mpirun -n 8 python -m pytest -m 'parallel' $test"
remove_input $test

test="tests/py_mpp/test_getset_domains.py"
create_input $test
run_test "mpirun -n 4 python -m pytest -m 'parallel' tests/py_mpp/test_getset_domains.py"
remove_input $test

run_test "pytest tests/py_horiz_interp"

run_test "pytest tests/py_data_override/test_generate_files.py"
run_test "mpirun -n 6 python -m pytest -m 'parallel' tests/py_data_override/test_data_override.py"
remove_input "tests/py_data_override/test_data_override.py"

rm -rf INPUT *logfile* *warnfile*
15 changes: 15 additions & 0 deletions tests/py_data_override/test_data_override.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import os
import shutil

import numpy as np
import pytest

from pyfms import pyDataOverride, pyFMS, pyFMS_mpp, pyFMS_mpp_domains


@pytest.mark.parallel
def test_data_override():

pyfms = pyFMS()
Expand Down Expand Up @@ -45,3 +50,13 @@ def test_data_override():
)
pyfms.pyfms_end()
assert data == 1.0


@pytest.mark.remove
def test_remove_files():
shutil.rmtree("INPUT")
os.remove("input.nml")
os.remove("data_table.yaml")
assert not os.path.exists("INPUT")
assert not os.path.isfile("input.nml")
assert not os.path.isfile("data_table.yaml")
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@
cfms_path = os.path.dirname(__file__) + "/../../cFMS/cLIBFMS/lib/libcFMS.so"


def test_create_input_nml():
inputnml = open("input.nml", "w")
inputnml.close()
assert os.path.isfile("input.nml")


def test_create_xgrid():

cfms = pyfms.pyFMS(cFMS_path=cfms_path).cFMS
Expand Down Expand Up @@ -72,3 +78,8 @@ def test_create_xgrid():
assert np.array_equal(xgrid["i_src"], xgrid["i_tgt"])
assert np.array_equal(xgrid["j_src"], xgrid["j_tgt"])
assert np.array_equal(xgrid["xarea"], area)


def test_remove_input_nml():
os.remove("input.nml")
assert not os.path.isfile("input.nml")
17 changes: 17 additions & 0 deletions tests/py_mpp/test_define_domains.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
import os

import numpy as np
import pytest

from pyfms import pyDomain, pyFMS, pyFMS_mpp, pyFMS_mpp_domains, pyNestDomain


@pytest.mark.create
def test_create_input_nml():
inputnml = open("input.nml", "w")
inputnml.close()
os.path.isfile("input.nml")


@pytest.mark.parallel
def test_define_domains():

NX = 96
Expand Down Expand Up @@ -191,5 +202,11 @@ def test_define_domains():
# mpp.pyfms_error(errortype=1)


@pytest.mark.remove
def test_remove_input_nml():
os.remove("input.nml")
assert not os.path.isfile("input.nml")


if __name__ == "__main__":
test_define_domains()
17 changes: 17 additions & 0 deletions tests/py_mpp/test_getset_domains.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
import os

import numpy as np
import pytest

from pyfms import pyDomain, pyFMS, pyFMS_mpp, pyFMS_mpp_domains


@pytest.mark.create
def test_create_input_nml():
inputnml = open("input.nml", "w")
inputnml.close()
assert os.path.isfile("input.nml")


@pytest.mark.parallel
def test_getset_domains():
"""
global domain
Expand Down Expand Up @@ -142,5 +153,11 @@ def test_getset_domains():
pyfms.pyfms_end()


@pytest.mark.remove
def test_remove_input_nml():
os.remove("input.nml")
assert not os.path.isfile("input.nml")


if __name__ == "__main__":
test_getset_domains()
16 changes: 16 additions & 0 deletions tests/test_pyfms.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import os

import pytest
from mpi4py import MPI

from pyfms import pyFMS
Expand All @@ -8,6 +9,15 @@
cfms_path = os.path.dirname(__file__) + "/../cFMS/cLIBFMS/lib/libcFMS.so"


@pytest.mark.create
def test_create_input_nml():
inputnml = open("input.nml", "w")
inputnml.close()

assert os.path.isfile("input.nml")


@pytest.mark.parallel
def test_pyfms_init():

assert os.path.exists(cfms_path)
Expand All @@ -22,3 +32,9 @@ def test_pyfms_init():
assert isinstance(pyfmsobj, pyFMS)

pyfmsobj.pyfms_end()


@pytest.mark.remove
def test_remove_input_nml():
os.remove("input.nml")
assert not os.path.isfile("input.nml")