name: Code coverage on: push: branches: [ main ] paths-ignore: - '**.md' - 'demo/**' - 'docs/**' pull_request: branches: [ main ] paths-ignore: - '**.md' - 'demo/**' - 'docs/**' workflow_dispatch: jobs: grcov: runs-on: ubuntu-latest env: # PG_* variables are used by psql PGDATABASE: test PGHOST: localhost PGUSER: postgres services: postgres: image: postgis/postgis:14-3.3-alpine env: # POSTGRES_* variables are used by the postgis/postgres image POSTGRES_DB: ${{ env.PGDATABASE }} POSTGRES_USER: ${{ env.PGUSER }} POSTGRES_HOST_AUTH_METHOD: trust ports: # will assign a random free host port - 5432/tcp # needed because the postgres container does not provide a healthcheck options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Checkout sources uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 - name: Setup database run: | sudo apt-get install postgresql-client tests/fixtures/initdb.sh env: PGPORT: ${{ job.services.postgres.ports[5432] }} - name: Install nightly toolchain uses: dtolnay/rust-toolchain@master with: toolchain: nightly override: true - name: Run tests run: cargo test env: CARGO_INCREMENTAL: '0' RUSTFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests' RUSTDOCFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests' DATABASE_URL: postgres://${{ env.PGUSER }}@${{ env.PGHOST }}:${{ job.services.postgres.ports[5432] }}/${{ env.PGDATABASE }} - name: Gather coverage data id: coverage uses: actions-rs/grcov@v0.1 - name: Codecov upload uses: codecov/codecov-action@v3 with: file: ${{ steps.coverage.outputs.report }} - name: Check conditional cfg values run: | cargo +nightly check -Z unstable-options -Z check-cfg=features,names,values,output --workspace env: RUSTFLAGS: '-D warnings'