name: CI checks on: [push, pull_request] jobs: test: name: Test on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@v4 - name: Run tests run: cargo test --all-features --verbose - name: Verify working directory is clean run: git diff --exit-code build-latest: name: Latest build on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable id: toolchain - run: rustup override set ${{steps.toolchain.outputs.name}} - name: Remove lockfile to build with latest dependencies run: rm Cargo.lock - name: Build crate run: cargo build --all-targets --all-features --verbose - name: Verify working directory is clean (excluding lockfile) run: git diff --exit-code ':!Cargo.lock' build-nodefault: name: Build target ${{ matrix.target }} runs-on: ubuntu-latest strategy: matrix: target: - wasm32-wasi steps: - uses: actions/checkout@v4 - name: Add target run: rustup target add ${{ matrix.target }} - name: Build crate run: cargo build --no-default-features --verbose --target ${{ matrix.target }} bitrot: name: Bitrot check runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # Build benchmarks to prevent bitrot - name: Build benchmarks run: cargo build --benches clippy: name: Clippy (MSRV) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run Clippy uses: auguwu/clippy-action@1.3.0 with: token: ${{ secrets.GITHUB_TOKEN }} working-directory: ${{ inputs.target }} deny: warnings doc-links: name: Intra-doc links runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: cargo fetch # Requires #![deny(rustdoc::broken_intra_doc_links)] in crate. - name: Check intra-doc links run: cargo doc --all-features --document-private-items fmt: name: Rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Check formatting run: cargo fmt -- --check