Fix/tests #90
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: unit tests | |
on: | |
push: | |
branches: [master, develop] | |
pull_request: | |
branches: [master, develop] | |
jobs: | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
compiler: [gfortran-9, gfortran-10, gfortran-12] | |
coverage: [false] | |
include: | |
- os: ubuntu-latest | |
compiler: gfortran-11 | |
coverage: true | |
env: | |
FC: ${{ matrix.compiler }} | |
PFUNIT_DIR: /home/runner/work/legolas/legolas/tests/pFUnit/build/installed | |
LEGOLASDIR: /home/runner/work/legolas/legolas | |
ARPACK_ROOT: /home/runner/work/legolas/legolas/tests/arpack-ng | |
name: unit-tests / ${{ matrix.os }} / ${{ matrix.compiler }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python 3.9 | |
uses: actions/setup-python@v1 | |
with: | |
python-version: 3.9 | |
- name: Install cmake | |
uses: jwlawson/actions-setup-cmake@v1.13.0 | |
with: | |
cmake-version: "3.24.x" | |
- name: Install Legolas dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install ${{ matrix.compiler }} | |
sudo apt-get install libblas-dev | |
sudo apt-get install liblapack-dev | |
sudo apt-get install lcov | |
${FC} --version | |
cmake --version | |
gcov --version | |
- name: Install Python dependencies & Pylbo | |
run: | | |
python -m pip install --upgrade pip | |
pip install pytest numpy matplotlib f90nml tqdm psutil pytest-mpl | |
cd post_processing | |
python setup.py develop | |
- name: Cache pFUnit | |
id: pfunit-cache | |
uses: actions/cache@v4 | |
with: | |
path: tests/pFUnit/ | |
key: ${{ runner.os }}-${{ matrix.compiler }}-pfunitv1 | |
- name: Build pFUnit | |
if: steps.pfunit-cache.outputs.cache-hit != 'true' | |
run: | | |
cd tests/ | |
git clone https://github.com/Goddard-Fortran-Ecosystem/pFUnit.git | |
cd pFUnit | |
mkdir build | |
cd build | |
cmake .. -DSKIP_MPI=YES -DSKIP_OPENMP=YES -DSKIP_FHAMCREST=YES | |
make -j 2 tests | |
make -j 2 install | |
- name: Cache ARPACK | |
id: arpack-cache | |
uses: actions/cache@v4 | |
with: | |
path: tests/arpack-ng/ | |
key: ${{ runner.os }}-${{ matrix.compiler }}-arpackv1 | |
- name: Build ARPACK | |
if: steps.arpack-cache.outputs.cache-hit != 'true' | |
run: | | |
cd tests | |
git clone https://github.com/opencollab/arpack-ng.git | |
cd arpack-ng | |
mkdir build | |
mkdir installed | |
cd build | |
cmake -DEXAMPLES=OFF -DMPI=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=../installed .. | |
make -j 2 | |
sudo make -j 2 install | |
- name: Compile Legolas | |
run: | | |
mkdir build | |
cd build | |
if [[ "${{ matrix.coverage }}" ]]; then | |
cmake -DCoverage=ON .. | |
else | |
cmake -DDebug=ON .. | |
fi | |
make -j 2 | |
- name: Run tests | |
run: | | |
cd $LEGOLASDIR/tests/unit_tests | |
mkdir build | |
cd build | |
cmake -DCoverage=ON .. | |
make -j 2 | |
cd .. | |
# ensure failures are caught, pFUnit sometimes silently fails? | |
./test_legolas | tee test_legolas.log | |
if grep -q "FAILURES" test_legolas.log; then | |
exit 1 | |
fi | |
- name: Generate coverage report | |
if: ${{ matrix.coverage }} | |
run: | | |
mkdir coverage | |
cd coverage | |
lcov --capture --directory $LEGOLASDIR/build \ | |
--output-file unit-tests-${{ matrix.compiler }}.info \ | |
--gcov-tool /usr/bin/gcov-11 | |
# filter out coverage files | |
find $LEGOLASDIR/build -name '*.gc*' -delete | |
- name: Archive failed logs | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: failed_logs | |
path: tests/regression_tests/test_results | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v1 | |
if: ${{ matrix.coverage }} | |
with: | |
files: ./coverage/unit-tests-${{ matrix.compiler }}.info | |
flags: legolas |