name: Rust on: push: branches: [main] pull_request: env: CARGO_TERM_COLOR: always grcov-version: 0.8.0 jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Build run: cargo build - name: Run tests run: cargo test - name: Run clippy uses: actions-rs/clippy-check@v1 with: token: ${{ secrets.GITHUB_TOKEN }} args: --all-features format: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Format Rust code run: cargo fmt --all -- --check coverage: runs-on: ubuntu-latest env: RUSTC_BOOTSTRAP: 1 steps: - uses: actions/checkout@v2 - name: Install dependencies run: sudo apt-get install libdbus-1-dev - name: Install grcov run: curl -L https://github.com/mozilla/grcov/releases/latest/download/grcov-linux-x86_64.tar.bz2 | tar jxf - - name: Install llvm-tools run: rustup component add llvm-tools-preview - name: Build for coverage run: cargo build --all-features env: RUSTFLAGS: "-Zinstrument-coverage" - name: Run tests with coverage run: cargo test --all-features env: RUSTFLAGS: "-Zinstrument-coverage" LLVM_PROFILE_FILE: "test-coverage-%p-%m.profraw" - name: Convert coverage run: ./grcov . -s . --binary-path target/debug/ -t lcov --branch --ignore-not-existing -o target/debug/lcov.info - name: Upload coverage to codecov.io uses: codecov/codecov-action@v1 with: directory: ./target/debug fail_ci_if_error: true