Add code coverage to stdlib. #2194
Workflow file for this run
This file contains hidden or 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: fpm-deployment | |
on: [push, pull_request] | |
jobs: | |
deploy: | |
name: Run tests and deploys the fpm branches | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
toolchain: {compiler: gcc, version: 13} | |
steps: | |
- name: Checkout code | |
uses: actions/[email protected] | |
- name: Set up Python 3.x | |
uses: actions/setup-python@v1 | |
with: | |
python-version: 3.x | |
- name: Install requirements | |
run: pip install --upgrade -r config/requirements.txt | |
- uses: fortran-lang/setup-fortran@main | |
id: setup-fortran | |
with: | |
compiler: ${{ matrix.toolchain.compiler }} | |
version: ${{ matrix.toolchain.version }} | |
- name: Setup Fortran Package Manager | |
uses: fortran-lang/setup-fpm@v5 | |
with: | |
fpm-version: 'v0.10.0' | |
- run: | # Just for deployment: create stdlib-fpm folder | |
python config/fypp_deployment.py --deploy_stdlib_fpm | |
- run: | # Just for deployment: create stdlib-fpm-ilp64 folder | |
python config/fypp_deployment.py --deploy_stdlib_fpm --with_ilp64 | |
- run: | # Use fpm gnu ci to check xdp and qp | |
python config/fypp_deployment.py --with_xdp --with_qp | |
fpm test --profile release --flag '-DWITH_XDP -DWITH_QP' | |
# Update and deploy the f90 files generated by github-ci to the `stdlib-fpm` branch. | |
- name: Deploy 🚀 | |
uses: JamesIves/[email protected] | |
if: github.event_name != 'pull_request' | |
with: | |
BRANCH: stdlib-fpm | |
FOLDER: stdlib-fpm | |
# Update and deploy the f90 files generated by github-ci to the `stdlib-fpm-ilp64` branch. | |
- name: Deploy with 64-bit integer support 🚀 | |
uses: JamesIves/[email protected] | |
if: github.event_name != 'pull_request' | |
with: | |
BRANCH: stdlib-fpm-ilp64 | |
FOLDER: stdlib-fpm-ilp64 | |
coverage: | |
name: Generate and upload code coverage report | |
needs: deploy | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
toolchain: {compiler: gcc, version: 13} | |
steps: | |
- name: Checkout code | |
uses: actions/[email protected] | |
with: | |
ref: stdlib-fpm | |
- uses: fortran-lang/setup-fortran@main | |
id: setup-fortran | |
with: | |
compiler: ${{ matrix.toolchain.compiler }} | |
version: ${{ matrix.toolchain.version }} | |
- name: Setup Fortran Package Manager | |
uses: fortran-lang/setup-fpm@v5 | |
with: | |
fpm-version: 'v0.10.0' | |
- name: Prepare for code coverage | |
if: contains( matrix.os, 'ubuntu') | |
run: | | |
sudo apt-get install lcov | |
- name: Run tests to generate the coverage. | |
run: fpm test --profile release --flag '-DWITH_XDP -DWITH_QP -coverage' | |
- name: Create coverage report | |
run: | | |
mkdir -p ${{ env.COV_DIR }} | |
mv ./build/gfortran_*/*/* ${{ env.COV_DIR }} | |
lcov --capture --initial --base-directory . --directory ${{ env.COV_DIR }} --output-file ${{ env.COV_DIR }}/coverage.base --ignore-errors mismatch | |
lcov --capture --base-directory . --directory ${{ env.COV_DIR }} --output-file ${{ env.COV_DIR }}/coverage.capture --ignore-errors mismatch | |
lcov --add-tracefile ${{ env.COV_DIR }}/coverage.base --add-tracefile ${{ env.COV_DIR }}/coverage.capture --output-file ${{ env.COV_DIR }}/coverage.info --ignore-errors mismatch | |
env: | |
COV_DIR: build/coverage | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: build/coverage/coverage.info |