Skip to content

Merge pull request #161 from n-claes/fix/tests #92

Merge pull request #161 from n-claes/fix/tests

Merge pull request #161 from n-claes/fix/tests #92

Workflow file for this run

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