on: push: branches: - main pull_request: env: RUSTFLAGS: -D warnings NEXTEST_EXPERIMENTAL_FILTER_EXPR: 1 CARGO_TERM_COLOR: always concurrency: group: ${{ github.head_ref || github.run_id }} cancel-in-progress: true name: ci jobs: test: runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v3 - name: Install toolchain uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install latest nextest release uses: taiki-e/install-action@nextest - name: Test with latest nextest release uses: actions-rs/cargo@v1 with: command: nextest args: run --locked --workspace --all-features lint: runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v3 - name: Install toolchain uses: dtolnay/rust-toolchain@nightly with: components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: cargo fmt uses: actions-rs/cargo@v1 with: command: fmt args: --all --check - name: cargo clippy uses: actions-rs/clippy-check@v1 with: args: --all --all-features token: ${{ secrets.GITHUB_TOKEN }} coverage: runs-on: ubuntu-latest # nightly rust might break from time to time continue-on-error: true needs: [test] steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable with: components: llvm-tools-preview - uses: Swatinem/rust-cache@v2 - name: Install latest nextest release uses: taiki-e/install-action@nextest - name: Install cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov - name: Collect coverage data run: cargo llvm-cov nextest --lcov --output-path lcov.info --locked --workspace --all-features - name: Upload coverage data to codecov uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} files: lcov.info