diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 99b9ee8..0a5f229 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,72 +3,117 @@ on: [push, pull_request] name: CI tests jobs: - linting: - name: Run lints + build: + name: Build project runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions-rs/toolchain@v1 + - uses: dtolnay/rust-toolchain@stable + id: setup_rust with: - profile: minimal - toolchain: stable - override: true - - - run: rustup component add rustfmt - - uses: actions-rs/cargo@v1 + components: "rustfmt, clippy" + - uses: actions/cache@v3 with: - command: fmt - args: --all -- --check + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: "cargo-base-${{ steps.setup_rust.outputs.cachekey }}-${{ hashFiles('**/Cargo.lock') }}" + restore-keys: | + cargo-base-${{ steps.setup_rust.outputs.cachekey }} + - run: cargo build - - uses: actions-rs/cargo@v1 + lint: + name: Run lints + runs-on: ubuntu-latest + needs: build + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + id: setup_rust with: - command: check - - - run: rustup component add clippy - - uses: actions-rs/cargo@v1 + components: "rustfmt, clippy" + - uses: actions/cache@v3 with: - command: clippy - args: -- -D warnings + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: "cargo-lint-${{ steps.setup_rust.outputs.cachekey }}-${{ hashFiles('**/Cargo.lock') }}" + restore-keys: | + cargo-lint-${{ steps.setup_rust.outputs.cachekey }} + cargo-base-${{ steps.setup_rust.outputs.cachekey }} + + - run: cargo fmt --all -- --check + - run: cargo check + - run: cargo clippy -- -D warnings test-linux: name: Test on Linux runs-on: ubuntu-latest + needs: build steps: - uses: actions/checkout@v4 - - uses: actions-rs/toolchain@v1 + - uses: dtolnay/rust-toolchain@stable + id: setup_rust + - uses: actions/cache@v3 with: - profile: minimal - toolchain: stable - override: true - - uses: actions-rs/cargo@v1 - with: - command: test + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + key: "cargo-test-${{ steps.setup_rust.outputs.cachekey }}-${{ hashFiles('**/Cargo.lock') }}" + restore-keys: | + cargo-test-${{ steps.setup_rust.outputs.cachekey }} + cargo-base-${{ steps.setup_rust.outputs.cachekey }} + - run: cargo test test-windows: name: Test on Windows runs-on: windows-latest + needs: build steps: - run: git config --system core.autocrlf false && git config --system core.eol lf - uses: actions/checkout@v4 - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - uses: actions-rs/cargo@v1 + - uses: dtolnay/rust-toolchain@stable + id: setup_rust + - uses: actions/cache@v3 with: - command: test + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + key: "cargo-windows-${{ steps.setup_rust.outputs.cachekey }}-${{ hashFiles('**/Cargo.lock') }}" + restore-keys: | + cargo-windows-${{ steps.setup_rust.outputs.cachekey }} + cargo-base-${{ steps.setup_rust.outputs.cachekey }} + - run: cargo test coverage: name: Code coverage runs-on: ubuntu-latest + needs: build steps: - uses: actions/checkout@v4 - - uses: actions-rs/toolchain@v1 + - uses: dtolnay/rust-toolchain@stable + id: setup_rust + - uses: actions/cache@v3 with: - profile: minimal - toolchain: stable - override: true + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + key: "cargo-coverage-${{ steps.setup_rust.outputs.cachekey }}-${{ hashFiles('**/Cargo.lock') }}" + restore-keys: | + cargo-coverage-${{ steps.setup_rust.outputs.cachekey }} + cargo-base-${{ steps.setup_rust.outputs.cachekey }} - uses: actions-rs/tarpaulin@v0.1 with: # Constrained by https://github.com/actions-rs/tarpaulin/pull/23