diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 656f3d7..4db8de8 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -1,20 +1,91 @@ name: Rust -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] +on: [push, pull_request] env: CARGO_TERM_COLOR: always + RUST_BACKTRACE: full jobs: build: - runs-on: ubuntu-latest + name: ${{ matrix.config.toolchain }} / ${{ matrix.config.os }} + + runs-on: ${{ matrix.config.os }} + + strategy: + fail-fast: false + matrix: + config: + - os: ubuntu-latest + toolchain: beta + + - os: macos-latest + toolchain: stable + + - os: ubuntu-latest + toolchain: stable + + - os: windows-latest + toolchain: stable + steps: - - uses: actions/checkout@v3 - - name: Build - run: cargo build --verbose - - name: Run tests - run: cargo test --verbose + - uses: actions/checkout@v3 + + - uses: actions/cache@v3 + with: + path: | + ~/.cargo + ~/.rustup + key: ${{ runner.os }}-${{ matrix.config.toolchain }} + + - name: Install Rust ${{ matrix.config.toolchain }} + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: ${{ matrix.config.toolchain }} + override: true + + - run: rustup component add clippy + - run: rustup component add rustfmt + + - name: Build + uses: actions-rs/cargo@v1 + with: + command: build + args: --all-targets --verbose --workspace + + - name: Test + uses: actions-rs/cargo@v1 + with: + command: test + args: --all-targets --verbose --workspace + + - name: Build --all-features + uses: actions-rs/cargo@v1 + with: + command: build + args: --all-targets --all-features --verbose --workspace + + - name: Test --all-features + uses: actions-rs/cargo@v1 + with: + command: test + args: --all-targets --all-features --verbose --workspace + + - name: Check formatting + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --check --all + + - name: Clippy + uses: actions-rs/cargo@v1 + with: + command: clippy + args: --all-features -- -D warnings -D clippy::expect_used -D clippy::panic -D clippy::unwrap_used + + - name: Clippy (tests) + uses: actions-rs/cargo@v1 + with: + command: clippy + args: --all-features --all-targets -- -D warnings