Skip to content

Migrate CI to rust-toolchain #72

Migrate CI to rust-toolchain

Migrate CI to rust-toolchain #72

Workflow file for this run

name: Tests
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
env:
CARGO_TERM_COLOR: always
jobs:
check-doc:
name: Check doc
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install toolchain
uses: dtolnay/rust-toolchain@nightly
- run: cargo install cargo-deadlinks
- name: doc (rand)
env:
RUSTDOCFLAGS: --cfg doc_cfg
# --all builds all crates, but with default features for other crates (okay in this case)
run: cargo deadlinks --ignore-fragments -- --all --all-features
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
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: Install toolchain
uses: dtolnay/rust-toolchain@master
with:
targets: ${{ 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: Maybe nightly
if: ${{ matrix.toolchain == 'nightly' }}
run: |
cargo test --target ${{ matrix.target }} --benches
- name: Test
run: |
cargo test --target ${{ matrix.target }} --manifest-path rand_hc/Cargo.toml --all-features
cargo test --target ${{ matrix.target }} --manifest-path rand_isaac/Cargo.toml --all-features
cargo test --target ${{ matrix.target }} --manifest-path rand_xorshift/Cargo.toml --all-features
cargo test --target ${{ matrix.target }} --manifest-path rand_xoshiro/Cargo.toml --all-features
cargo test --target ${{ matrix.target }} --manifest-path rand_jitter/Cargo.toml --all-features
msrv:
name: MSRV for rand_isaac / rand_xorshift / rand_xoshiro
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/[email protected] # older versions may work (untested)
- run: cd rand_isaac && cargo test --all-features
- run: cd rand_xorshift && cargo test --all-features
- run: cd rand_xoshiro && cargo test --all-features
msrv_hc:
name: MSRV for rand_hc
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/[email protected]
- run: cd rand_hc && cargo test --all-features
msrv_jitter:
name: MSRV for rand_jitter
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/[email protected]
- run: cd rand_jitter && cargo test --features std
test-cross:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [powerpc-unknown-linux-gnu]
toolchain: [stable]
steps:
- uses: actions/checkout@v4
- name: Install toolchain
uses: dtolnay/rust-toolchain@master
with:
targets: ${{ matrix.target }}
toolchain: ${{ matrix.toolchain }}
- name: Cache cargo plugins
uses: actions/cache@v1
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 --target ${{ matrix.target }} --manifest-path rand_hc/Cargo.toml --all-features
cross test --no-fail-fast --target ${{ matrix.target }} --manifest-path rand_isaac/Cargo.toml --all-features
cross test --no-fail-fast --target ${{ matrix.target }} --manifest-path rand_xorshift/Cargo.toml --all-features
cross test --no-fail-fast --target ${{ matrix.target }} --manifest-path rand_xoshiro/Cargo.toml --all-features
cross test --no-fail-fast --target ${{ matrix.target }} --manifest-path rand_jitter/Cargo.toml --all-features
test-miri:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install toolchain
run: |
MIRI_NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)
rustup default "$MIRI_NIGHTLY"
rustup component add miri
- name: Test rand
run: |
cargo miri test --manifest-path rand_hc/Cargo.toml --all-features
cargo miri test --manifest-path rand_isaac/Cargo.toml --all-features
cargo miri test --manifest-path rand_xorshift/Cargo.toml --all-features
cargo miri test --manifest-path rand_xoshiro/Cargo.toml --all-features
MIRIFLAGS="-Zmiri-disable-isolation" cargo miri test --manifest-path rand_jitter/Cargo.toml