name: CI
on: [ push, pull_request, workflow_dispatch ]
jobs:
rustfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
components: clippy, rustfmt
- run: cargo clippy --all --all-targets --features full-test-suite
- run: cargo clippy --all --all-targets --features full-test-suite,forbid-unsafe
- run: cargo clippy --all --all-targets --features full-test-suite --no-default-features
- run: cargo clippy --all --all-targets --no-default-features
- run: cargo fmt --all --check
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
toolchain:
- stable - "1.70" - "1.68" os:
- ubuntu-latest
env:
TEST_SUITE: "${{ matrix.toolchain == '1.68' && 'msrv-test-suite' || 'full-test-suite' }}"
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
steps:
- uses: actions/checkout@v7
- name: install toolchain (${{ matrix.toolchain }})
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
- uses: Swatinem/rust-cache@v2
- name: msrv pinning
run: if [[ "stable" != "${{ matrix.toolchain }}" ]]; then ./msrv-lock.sh ; fi
- name: test
run: cargo test --workspace --all-targets --features $TEST_SUITE
- name: test forbid-unsafe
run: cargo test --workspace --all-targets --features $TEST_SUITE,forbid-unsafe
- name: test no-default-features
run: cargo test --workspace --all-targets --features $TEST_SUITE --no-default-features
- name: test minimal features
run: cargo test --workspace --all-targets --no-default-features
- name: test doc
run: cargo test --workspace --doc --features $TEST_SUITE
- name: test doc no-default-features
run: cargo test --workspace --doc --features $TEST_SUITE --no-default-features
- name: test doc minimal features
run: cargo test --workspace --doc --no-default-features
- name: test suite extra external crate options
run: cargo test --workspace --features test-suite-extra --no-default-features
- name: ancient hashbrown check
run: ./test-ancient-hashbrown.sh
test-outdated:
runs-on: ${{ matrix.os }}
strategy:
matrix:
toolchain:
- stable os:
- ubuntu-latest
env:
TEST_SUITE: full-test-suite
steps:
- uses: actions/checkout@v7
- name: install toolchain (${{ matrix.toolchain }})
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
- uses: Swatinem/rust-cache@v2
- name: pin to old dependency versions
run: ./msrv-lock.sh
- name: test
run: cargo test --workspace --all-targets --features $TEST_SUITE
- name: test forbid-unsafe
run: cargo test --workspace --all-targets --features $TEST_SUITE,forbid-unsafe
- name: test no-default-features
run: cargo test --workspace --all-targets --features $TEST_SUITE --no-default-features
- name: test minimal features
run: cargo test --workspace --all-targets --no-default-features
- name: test doc
run: cargo test --workspace --doc --features $TEST_SUITE
- name: test doc no-default-features
run: cargo test --workspace --doc --features $TEST_SUITE --no-default-features
- name: test doc minimal features
run: cargo test --workspace --doc --no-default-features
- name: test suite extra external crate options
run: cargo test --workspace --features test-suite-extra --no-default-features
- name: ancient hashbrown check
run: ./test-ancient-hashbrown.sh
no-std:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: nightly
- uses: Swatinem/rust-cache@v2
- name: install cargo-no-std-check
uses: baptiste0928/cargo-install@v3
with:
crate: cargo-no-std-check
- name: bilrost cargo-no-std-check
run: cargo no-std-check --manifest-path Cargo.toml --features full-test-suite --no-default-features
- name: bilrost-derive cargo-no-std-check
run: cargo no-std-check --manifest-path bilrost-derive/Cargo.toml --no-default-features
- name: bilrost-types cargo-no-std-check
run: cargo no-std-check --manifest-path bilrost-types/Cargo.toml --no-default-features