diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2cc40dad..8d981309 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -322,6 +322,7 @@ jobs: ls # Enable tmate debugging of manually-triggered workflows if the input option was provided + # To execute: Click the GitHub "Actions" tab, then "CI", then "Run Workflow", then set debugging to "true" - name: Setup tmate session uses: mxschmitt/action-tmate@v3 if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }} @@ -336,3 +337,82 @@ jobs: run: | codecov.exe -f coverage.xml -t "99465b5f-26b4-4487-8355-fbcac5249a05" + + + # Build for posix systems + conda: + + strategy: + fail-fast: false + matrix: + platform: [ ubuntu-latest ] + mpilib: [null] + + # The type of runner that the job will run on + runs-on: ${{ matrix.platform }} + + env: + OMPI_MCA_btl_base_warn_component_unused: "0" + CODECOV_TOKEN: "99465b5f-26b4-4487-8355-fbcac5249a05" + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + + # Install Miniconda + - uses: conda-incubator/setup-miniconda@v2 + with: + auto-activate-base: true + activate-environment: "" + + - name: Create source file with all required environment variables + shell: bash -el {0} + run: | + # Create a source file that will contain environment variables used in additional steps + # Environment variabls are not normally preserved between steps, so the source file is necessary + touch env.source + + # Set MDI_TESTS, which defines which tests will be performed for this job + [ "${{ matrix.mpilib }}" == "" ] && echo 'export MDI_TESTS="not mpi"' >> env.source + + cat env.source + + - name: Install dependencies + shell: bash -el {0} + run: | + source env.source + sudo apt-get clean + sudo apt-get update + sudo apt-get install gfortran + conda install -y -c conda-forge numpy + conda install -y -c conda-forge pytest + conda install -y -c conda-forge pymdi + + - name: Install local build + shell: bash -el {0} + run: | + source env.source + mkdir build + cd build + cmake -Dtest_codes=ON -DCMAKE_INSTALL_PREFIX=./install .. + make VERBOSE=1 + #make install + rm MDI_Library/__init__.py + rm MDI_Library/mdi.py + ls + ls MDI_Library + + # Enable tmate debugging of manually-triggered workflows if the input option was provided + # To execute: Click the GitHub "Actions" tab, then "CI", then "Run Workflow", then set debugging to "true" + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }} + + - name: Run test scripts + shell: bash -el {0} + run: | + source env.source + conda list + cd tests + pytest -vv -k "${MDI_TESTS}" diff --git a/tests/MDI_Test_Codes/driver_ipicomp_py/driver_ipicomp_py.py b/tests/MDI_Test_Codes/driver_ipicomp_py/driver_ipicomp_py.py index d618e85b..801b58b1 100644 --- a/tests/MDI_Test_Codes/driver_ipicomp_py/driver_ipicomp_py.py +++ b/tests/MDI_Test_Codes/driver_ipicomp_py/driver_ipicomp_py.py @@ -3,6 +3,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/driver_plug_py/driver_plug_py.py b/tests/MDI_Test_Codes/driver_plug_py/driver_plug_py.py index 5cc14792..5fe15d65 100755 --- a/tests/MDI_Test_Codes/driver_plug_py/driver_plug_py.py +++ b/tests/MDI_Test_Codes/driver_plug_py/driver_plug_py.py @@ -3,6 +3,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/driver_py/driver_py.py b/tests/MDI_Test_Codes/driver_py/driver_py.py index 311c1e74..d37f2c31 100755 --- a/tests/MDI_Test_Codes/driver_py/driver_py.py +++ b/tests/MDI_Test_Codes/driver_py/driver_py.py @@ -3,6 +3,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/engine_py/engine_py.py b/tests/MDI_Test_Codes/engine_py/engine_py.py index 053e664e..9bd23ed8 100755 --- a/tests/MDI_Test_Codes/engine_py/engine_py.py +++ b/tests/MDI_Test_Codes/engine_py/engine_py.py @@ -3,6 +3,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/lib_py/lib_py.py b/tests/MDI_Test_Codes/lib_py/lib_py.py index aebf82f7..62179683 100644 --- a/tests/MDI_Test_Codes/lib_py/lib_py.py +++ b/tests/MDI_Test_Codes/lib_py/lib_py.py @@ -3,6 +3,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_double.py b/tests/MDI_Test_Codes/misc_py/ut_init_double.py index 2a43736a..b518b667 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_double.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_double.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_fake_method.py b/tests/MDI_Test_Codes/misc_py/ut_init_fake_method.py index 9db265bd..c42fbf3f 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_fake_method.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_fake_method.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_fake_opt.py b/tests/MDI_Test_Codes/misc_py/ut_init_fake_opt.py index e1effdab..e258d151 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_fake_opt.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_fake_opt.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_fake_role.py b/tests/MDI_Test_Codes/misc_py/ut_init_fake_role.py index 9bda889d..977c9932 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_fake_role.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_fake_role.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_no_hostname.py b/tests/MDI_Test_Codes/misc_py/ut_init_no_hostname.py index 54ecd38b..0ef6f4bd 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_no_hostname.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_no_hostname.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_no_method.py b/tests/MDI_Test_Codes/misc_py/ut_init_no_method.py index 36c85db0..19b862f9 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_no_method.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_no_method.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_no_name.py b/tests/MDI_Test_Codes/misc_py/ut_init_no_name.py index 16a0f605..50f8860a 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_no_name.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_no_name.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_no_port_d.py b/tests/MDI_Test_Codes/misc_py/ut_init_no_port_d.py index 5805545a..f6013ecd 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_no_port_d.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_no_port_d.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_no_port_e.py b/tests/MDI_Test_Codes/misc_py/ut_init_no_port_e.py index d31af333..0d5c9ca1 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_no_port_e.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_no_port_e.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_no_role.py b/tests/MDI_Test_Codes/misc_py/ut_init_no_role.py index 1a280fed..1be3b930 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_no_role.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_no_role.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_hostname.py b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_hostname.py index b9c13e44..7a13e574 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_hostname.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_hostname.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_language.py b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_language.py index 90715e8c..1c2c585c 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_language.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_language.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_method.py b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_method.py index afa31774..83e21f84 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_method.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_method.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_name.py b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_name.py index 7926bb16..b912e4a0 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_name.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_name.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_out.py b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_out.py index 1a7714d5..912707e7 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_out.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_out.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_port.py b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_port.py index 3f9d6ad5..ceef4606 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_port.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_port.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_role.py b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_role.py index 20ca047f..a27e12b0 100644 --- a/tests/MDI_Test_Codes/misc_py/ut_init_noarg_role.py +++ b/tests/MDI_Test_Codes/misc_py/ut_init_noarg_role.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/MDI_Test_Codes/misc_py/ut_tmethod.py b/tests/MDI_Test_Codes/misc_py/ut_tmethod.py old mode 100755 new mode 100644 index 9853722f..c4c88aa5 --- a/tests/MDI_Test_Codes/misc_py/ut_tmethod.py +++ b/tests/MDI_Test_Codes/misc_py/ut_tmethod.py @@ -4,6 +4,7 @@ try: # Check for local build import MDI_Library as mdi + testvar = mdi.MDI_COMMAND_LENGTH except: # Check for installed package import mdi diff --git a/tests/test_element.py b/tests/test_element.py index 9b8bf618..3598a327 100644 --- a/tests/test_element.py +++ b/tests/test_element.py @@ -18,6 +18,10 @@ def import_mdi(): try: # Check for local build sys.path.append('../build') import MDI_Library as mdi + try: + testvar = mdi.MDI_COMMAND_LENGTH + except AttributeError: + import mdi except ImportError: # Check for installed package import mdi return mdi @@ -41,4 +45,4 @@ def test_atomic_number_unrecognized(): mdi = import_mdi() with pytest.raises(Exception): - mdi.MDI_String_to_atomic_number("YY") \ No newline at end of file + mdi.MDI_String_to_atomic_number("YY") diff --git a/tests/test_uninit.py b/tests/test_uninit.py index 8975200c..2690d567 100644 --- a/tests/test_uninit.py +++ b/tests/test_uninit.py @@ -21,6 +21,10 @@ def import_mdi(): try: # Check for local build sys.path.append('../build') import MDI_Library as mdi + try: + testvar = mdi.MDI_COMMAND_LENGTH + except AttributeError: + import mdi except ImportError: # Check for installed package import mdi return mdi diff --git a/tests/test_unit.py b/tests/test_unit.py index 53b6cb30..017ea148 100644 --- a/tests/test_unit.py +++ b/tests/test_unit.py @@ -21,6 +21,10 @@ def import_mdi(): try: # Check for local build sys.path.append('../build') import MDI_Library as mdi + try: + testvar = mdi.MDI_COMMAND_LENGTH + except AttributeError: + import mdi except ImportError: # Check for installed package import mdi return mdi diff --git a/tests/valgrind.supp b/tests/valgrind.supp index f164062e..419ecec3 100644 --- a/tests/valgrind.supp +++ b/tests/valgrind.supp @@ -327,3 +327,41 @@ fun:start_thread fun:clone } + + +{ + Leak from test import + Memcheck:Leak + match-leak-kinds: definite + fun:malloc + fun:_PyMem_RawMalloc + fun:PyObject_Malloc + fun:PyFloat_FromDouble + fun:fill_time + fun:_pystat_fromstructstat + fun:posix_do_stat + fun:os_stat_impl + fun:os_stat + fun:cfunction_vectorcall_FASTCALL_KEYWORDS + fun:_PyObject_VectorcallTstate + fun:PyObject_Vectorcall +} + + +{ + Leak from test import 2 + Memcheck:Leak + match-leak-kinds: definite + fun:malloc + fun:_PyMem_RawMalloc + fun:PyObject_Malloc + fun:PyFloat_FromDouble + fun:float_abs + fun:PyNumber_Absolute + fun:builtin_abs + fun:cfunction_vectorcall_O + fun:_PyObject_VectorcallTstate + fun:PyObject_Vectorcall + fun:call_function + fun:_PyEval_EvalFrameDefault +}