name: CI

on:
  workflow_dispatch:
  pull_request:
    branches:
      - main
  push:
    branches:
      - main

jobs:

  coverage:
    name: Coverage (+nightly)
    # The large timeout is to accommodate nightly builds
    timeout-minutes: 45
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2.3.4
        with:
          persist-credentials: false

      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: nightly
          override: true
          profile: minimal
          components: llvm-tools-preview

      - uses: Swatinem/rust-cache@v1

      - name: Install rustfilt symbol demangler
        run: |
          cargo install rustfilt

      - name: Install cargo-llvm-cov cargo command
        run: |
          cargo install cargo-llvm-cov --version ^0.1.0-alpha.4

      - name: Generate code coverage
        env:
          ZEBRA_SKIP_NETWORK_TESTS: 1
          CARGO_INCREMENTAL: 0
        run: cargo llvm-cov --lcov > lcov.info

      - name: Upload coverage report to Codecov
        uses: codecov/codecov-action@v1.5.2
