name: Test on: push: branches: - master pull_request: paths: - "**.rs" - "**/Cargo.*" - ".github/workflows/test.yml" - "tests/compile-fail/**.stderr" merge_group: jobs: test: name: Test strategy: matrix: rust: - stable - beta experimental: - false include: - rust: nightly experimental: true continue-on-error: ${{ matrix.experimental }} runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Rust toolchain uses: dtolnay/rust-toolchain@master id: rust-toolchain with: toolchain: ${{ matrix.rust }} components: rustfmt, clippy - uses: actions/cache@v4 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-${{ steps.rust-toolchain.outputs.cachekey }}-${{ hashFiles('**/Cargo.toml') }} restore-keys: | ${{ runner.os }}-cargo-${{ steps.rust-toolchain.outputs.cachekey }}- ${{ runner.os }}-cargo- - name: Format run: cargo fmt -- --check - name: Clippy run: cargo clippy --workspace --all-features --all-targets - name: Test run: cargo test --workspace --all-features --all-targets - name: Test docs run: cargo test --workspace --all-features --doc - name: Check (without default features) run: cargo check --workspace --no-default-features miri: name: Miri runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install Miri uses: dtolnay/rust-toolchain@miri id: rust-toolchain - uses: actions/cache@v4 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-${{ steps.rust-toolchain.outputs.cachekey }}-miri-${{ hashFiles('**/Cargo.toml') }} restore-keys: | ${{ runner.os }}-cargo-${{ steps.rust-toolchain.outputs.cachekey }}-miri- ${{ runner.os }}-cargo-${{ steps.rust-toolchain.outputs.cachekey }}- ${{ runner.os }}-cargo- - name: Setup Miri run: cargo miri setup - name: Test with Miri run: cargo miri test --no-fail-fast --all-features - name: Run examples with Miri run: | cargo miri run --example calc