name: Coverage on: # On push to common branches, this computes the coverage that PRs will use for diff push: branches: - master pull_request: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: codecov: name: Run coverage and upload to codecov runs-on: ubuntu-22.04 env: CICOV: YES steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Nim uses: "./.github/actions/install_nim" with: os: linux cpu: amd64 shell: bash - name: Restore deps from cache id: deps-cache uses: actions/cache@v4 with: path: nimbledeps key: nimbledeps-${{ hashFiles('.pinned') }} - name: Install deps if: ${{ steps.deps-cache.outputs.cache-hit != 'true' }} run: | nimble install_pinned - name: Setup coverage run: | sudo apt-get update sudo apt-get install -y lcov build-essential git curl mkdir coverage - name: Run test suite with coverage flags run: | export NIMFLAGS="--lineDir:on --passC:-fprofile-arcs --passC:-ftest-coverage --passL:-fprofile-arcs --passL:-ftest-coverage" nimble testnative nimble testpubsub nimble testfilter - name: Run coverage run: | find nimcache -name *.c -delete lcov --capture --directory nimcache --output-file coverage/coverage.info shopt -s globstar ls `pwd`/libp2p/{*,**/*}.nim lcov --extract coverage/coverage.info `pwd`/libp2p/{*,**/*}.nim --output-file coverage/coverage.f.info genhtml coverage/coverage.f.info --output-directory coverage/output - name: Upload coverage to codecov run: | bash <(curl -s https://codecov.io/bash) -f coverage/coverage.f.info || echo "Codecov did not collect coverage reports"