name: Continuous integration on: [push, pull_request, merge_group] env: RUSTFLAGS: "-Dwarnings" RUSTDOCFLAGS: "-Dwarnings" TYPST_TESTS_EXTENDED: true jobs: # This allows us to have one branch protection rule for the full test matrix. # See: https://github.com/orgs/community/discussions/4324 tests: name: Tests runs-on: ubuntu-latest needs: [test-matrix] if: always() steps: - name: Tests successful if: ${{ !(contains(needs.*.result, 'failure')) }} run: exit 0 - name: Tests failing if: ${{ contains(needs.*.result, 'failure') }} run: exit 1 test-matrix: name: Tests strategy: matrix: os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@1.81.0 - uses: Swatinem/rust-cache@v2 - run: cargo test --workspace --no-run - run: cargo test --workspace --no-fail-fast checks: name: Check clippy, formatting, and documentation runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@1.81.0 with: components: clippy, rustfmt - uses: Swatinem/rust-cache@v2 - run: cargo clippy --workspace --all-targets --all-features - run: cargo fmt --check --all - run: cargo doc --workspace --no-deps min-version: name: Check minimum Rust version runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@1.77.0 - uses: Swatinem/rust-cache@v2 - run: cargo check --workspace fuzz: name: Check fuzzers runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master with: toolchain: nightly-2024-06-01 - uses: Swatinem/rust-cache@v2 - run: cargo install --locked cargo-fuzz@0.12.0 - run: cd tests/fuzz && cargo fuzz build --dev