Update CI #14
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
on: | |
push: | |
branches: [ master, '0.[0-9]+' ] | |
pull_request: | |
branches: [ master, '0.[0-9]+' ] | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
jobs: | |
check-doc: | |
name: Check doc, clippy, fmt | |
runs-on: ubuntu-latest | |
env: | |
RUSTDOCFLAGS: "-Dwarnings --cfg docsrs -Zunstable-options --generate-link-to-definition" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly | |
components: clippy, rustfmt | |
- name: Doc build | |
run: cargo doc --all-features --no-deps | |
- name: Clippy | |
run: cargo clippy --workspace --all-targets -- -D warnings | |
- name: rustfmt | |
run: cargo fmt -- --check | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
toolchain: stable | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
toolchain: stable | |
# TODO: also aarch64 / M1 | |
- os: windows-latest | |
target: x86_64-pc-windows-gnu | |
toolchain: stable | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
toolchain: beta | |
# Test both windows-gnu and windows-msvc; use beta rust on one | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
variant: MSRV | |
toolchain: 1.63.0 | |
- os: ubuntu-latest | |
deps: sudo apt-get update ; sudo apt install gcc-multilib | |
target: i686-unknown-linux-gnu | |
toolchain: nightly | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
toolchain: nightly | |
variant: minimal_versions | |
steps: | |
- uses: actions/checkout@v4 | |
- name: MSRV | |
if: ${{ matrix.variant == 'MSRV' }} | |
run: cp Cargo.lock.msrv Cargo.lock | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
target: ${{ matrix.target }} | |
toolchain: ${{ matrix.toolchain }} | |
- run: ${{ matrix.deps }} | |
- name: Maybe minimal versions | |
if: ${{ matrix.variant == 'minimal_versions' }} | |
run: | | |
cargo generate-lockfile -Z minimal-versions | |
- name: Test | |
run: | | |
cargo test --no-fail-fast --target ${{ matrix.target }} | |
test-cross: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
target: powerpc-unknown-linux-gnu | |
toolchain: stable | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
target: ${{ matrix.target }} | |
toolchain: ${{ matrix.toolchain }} | |
- name: Cache cargo plugins | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/bin/ | |
key: ${{ runner.os }}-cargo-plugins | |
- name: Install cross | |
run: cargo install cross || true | |
- name: Test | |
run: | | |
cross test --no-fail-fast | |
test-miri: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install toolchain | |
run: | | |
rustup toolchain install nightly --component miri | |
rustup override set nightly | |
cargo miri setup | |
- name: Test rand | |
run: | | |
cargo miri test | |
test-no-std: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
target: thumbv6m-none-eabi | |
- name: Build top-level only | |
run: cargo build --target=thumbv6m-none-eabi --no-default-features | |
test-ios: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
target: aarch64-apple-ios | |
- name: Build top-level only | |
run: cargo build --target=aarch64-apple-ios |