| 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 |