diff --git a/.github/workflows/fpm-deployment.yml b/.github/workflows/fpm-deployment.yml index ffcd392e1..226f7cae6 100644 --- a/.github/workflows/fpm-deployment.yml +++ b/.github/workflows/fpm-deployment.yml @@ -3,7 +3,8 @@ name: fpm-deployment on: [push, pull_request] jobs: - test: + deploy: + name: Run tests and deploys the fpm branches runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -41,11 +42,11 @@ jobs: - 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 + - 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. + # Update and deploy the f90 files generated by github-ci to the `stdlib-fpm` branch. - name: Deploy 🚀 uses: JamesIves/github-pages-deploy-action@4.1.5 if: github.event_name != 'pull_request' @@ -53,10 +54,62 @@ jobs: BRANCH: stdlib-fpm FOLDER: stdlib-fpm - # Update and deploy the f90 files generated by github-ci to the `stdlib-fpm-ilp64` branch. + # 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/github-pages-deploy-action@4.1.5 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/checkout@v4.2.2 + 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