diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6f00bae7a1..57457dfb83 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -94,30 +94,28 @@ jobs: run: cargo check --workspace --target wasm32-unknown-unknown feature-checks: + name: features ${{ matrix.rust }} ${{ matrix.flags }} runs-on: ubuntu-latest timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + rust: ["stable", "nightly"] + flags: ["", "--all-targets"] steps: - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: taiki-e/install-action@cargo-hack - - uses: Swatinem/rust-cache@v2 + - uses: dtolnay/rust-toolchain@master with: - cache-on-failure: true - - name: cargo hack - run: cargo hack check --each-feature --skip nightly - - feature-checks-all-targets: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable + toolchain: ${{ matrix.rust }} - uses: taiki-e/install-action@cargo-hack - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: cargo hack - run: cargo hack check --each-feature --skip nightly --all-targets + run: | + args=(${{ matrix.flags }}) + [ ${{ matrix.rust }} == "stable" ] && args+=(--skip nightly) + ./scripts/check_features.sh "${args[@]}" check-no-std: name: check no_std ${{ matrix.features }} diff --git a/scripts/check_features.sh b/scripts/check_features.sh new file mode 100755 index 0000000000..257dcd5e07 --- /dev/null +++ b/scripts/check_features.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -eo pipefail + +cargo hack check --feature-powerset --depth 1 \ + --group-features std,map --group-features std,map-fxhash --group-features std,map-indexmap \ + --ignore-unknown-features \ + "${@}"