Skip to content

Merge pull request #141 from vorner/dependabot/cargo/once_cell-1.20.2 #312

Merge pull request #141 from vorner/dependabot/cargo/once_cell-1.20.2

Merge pull request #141 from vorner/dependabot/cargo/once_cell-1.20.2 #312

Workflow file for this run

name: test
on:
push:
pull_request:
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: full
jobs:
test:
name: Build & test
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
rust:
- stable
- beta
- nightly
# 1.45.0 # The weak-into-raw feature stabilized
# 1.31.0 is tested separately, because it is supposed to only build
runs-on: ${{ matrix.os }}
steps:
- name: checkout
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
default: true
profile: minimal
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Build & test
env:
RUST_VERSION: ${{ matrix.rust }}
OS: ${{ matrix.os }}
RUSTFLAGS: -D warnings
run: cargo test --features weak,internal-test-strategies,experimental-strategies
big-tests:
name: Run the big ignored tests
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
profile: minimal
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Build & test
env:
RUSTFLAGS: -D warnings
run: cargo test --features weak,internal-test-strategies,experimental-strategies --release -- --ignored
bits32:
name: 32bit tests
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
profile: minimal
target: x86_64-unknown-linux-musl
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Build & test
env:
RUSTFLAGS: -D warnings
run: cargo test --features weak,internal-test-strategies,experimental-strategies --target x86_64-unknown-linux-musl
rustfmt:
name: Check formatting
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
default: true
components: rustfmt
- run: cargo fmt --all -- --check
links:
name: Check documentation links
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Check links
run: cargo rustdoc --features weak,internal-test-strategies,experimental-strategies -- -D warnings
clippy:
name: Clippy lints
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
default: true
components: clippy
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Run clippy linter
run: cargo clippy --all --features weak,internal-test-strategies,experimental-strategies --tests -- -D clippy::all -D warnings
bench:
name: Verify benchmarks compile
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
default: true
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Run clippy linter
run: cargo test --all --release --benches --features weak,internal-test-strategies,experimental-strategies
semi-ancient:
name: Check it compiles on old Rust (1.45.0)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.45.0
profile: minimal
default: true
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Run check
run: rm Cargo.lock && cargo check --features weak,internal-test-strategies,experimental-strategies
ancient:
name: Check it compiles on old Rust (1.31.0)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.31.0
profile: minimal
default: true
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Run check
run: rm Cargo.lock && cargo check
experimental_thread_local:
name: Test with experimental-thread-local
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
default: true
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Build & test
env:
RUSTFLAGS: -D warnings
run: cargo test --no-default-features --features weak,experimental-thread-local
miri:
name: Miri checks
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
default: true
components: "miri"
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Run miri
env:
PROPTEST_CASES: "10"
MIRIFLAGS: "-Zmiri-disable-isolation -Zmiri-permissive-provenance"
run: cargo miri test --features weak,internal-test-strategies,experimental-strategies
thread_sanitizer-MacOS:
name: Thread Sanitizer checks MacOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ github.event.repository.name }}-${{ runner.os }}-cargo-thread_sanitizer-v2
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
components: rust-src
- name: Run thread sanitizer
run: |
# Thread sanitizer isn't guaranteed to catch all data races, it can only catch it
# the data race if it happens when running the program.
#
# Running the tests multiple times increase the chances that data races are found
# by the thread sanitizer.
for _ in $(seq 1 10); do cargo +nightly test -Z build-std --target $(uname -m)-apple-darwin; done
env:
RUSTDOCFLAGS: "-Zsanitizer=thread"
RUSTFLAGS: "-Zsanitizer=thread"