name: Rust on: # NB: this differs from the book's project! # These settings allow us to run this specific CI pipeline for PRs against # this specific branch (a.k.a. book chapter). push: branches: - root-chapter-03-part0 pull_request: types: [ opened, synchronize, reopened ] branches: - root-chapter-03-part0 env: CARGO_TERM_COLOR: always jobs: test: name: Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - name: Run tests run: cargo test fmt: name: Rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: Enforce formatting run: cargo fmt --check clippy: name: Clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable with: components: clippy - uses: Swatinem/rust-cache@v2 - name: Linting run: cargo clippy -- -D warnings coverage: name: Code coverage runs-on: ubuntu-latest container: image: xd009642/tarpaulin options: --security-opt seccomp=unconfined steps: - name: Checkout repository uses: actions/checkout@v3 - name: Generate code coverage run: | cargo tarpaulin --verbose --workspace