proptest for q460: decrease cases to 10 with each 200 operations #22
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: CI | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
env: | |
CARGO_TERM_COLOR: always | |
RUSTFLAGS: -Dwarnings | |
RUST_BACKTRACE: 1 | |
# Change to specific Rust release to pin | |
rust_stable: stable | |
rust_nightly: nightly-2024-05-05 | |
# Pin a specific miri version | |
rust_miri_nightly: nightly-2024-10-21 | |
rust_clippy: '1.77' | |
rust_min: '1.70' | |
jobs: | |
tests-pass: | |
name: tests-pass | |
runs-on: ubuntu-latest | |
needs: | |
- tests | |
- nextest_with_coverage | |
- asan | |
- miri | |
steps: | |
- run: exit 0 | |
miri: | |
name: miri | |
needs: basics | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust ${{ env.rust_miri_nightly }} | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ env.rust_miri_nightly }} | |
components: miri | |
- name: Install cargo-nextest | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-nextest | |
- uses: Swatinem/rust-cache@v2 | |
- name: miri | |
run: | | |
cargo miri nextest run --lib --tests --no-fail-fast | |
env: | |
MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-strict-provenance -Zmiri-retag-fields | |
asan: | |
name: asan | |
needs: basics | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install llvm | |
# Required to resolve symbols in sanitizer output | |
run: sudo apt-get install -y llvm | |
- name: Install Rust ${{ env.rust_nightly }} | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ env.rust_nightly }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: asan | |
run: cargo test --workspace --all-features --target x86_64-unknown-linux-gnu --tests -- --test-threads 1 --nocapture | |
env: | |
RUSTFLAGS: -Z sanitizer=address --cfg tokio_no_tuning_tests | |
# Ignore `trybuild` errors as they are irrelevant and flaky on nightly | |
TRYBUILD: overwrite | |
nextest_with_coverage: | |
name: nextest_with_coverage | |
needs: | |
- basics | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# Nightly Rust is used for cargo llvm-cov --doc below. | |
- name: Install Rust ${{ env.rust_nightly }} | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ env.rust_nightly }} | |
components: llvm-tools-preview | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install cargo-nextest | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-nextest | |
- name: Install cargo-llvm-cov | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-llvm-cov | |
- name: Collect coverage data | |
# Generate separate reports for nextest and doctests, and combine them. | |
run: | | |
cargo llvm-cov --no-report nextest | |
cargo llvm-cov --no-report --doc | |
cargo llvm-cov report --doctests --lcov --output-path lcov.info | |
- name: Upload coverage data to codecov | |
uses: codecov/codecov-action@v5 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
files: lcov.info | |
tests: | |
name: tests | |
runs-on: ubuntu-latest | |
needs: | |
- basics | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust ${{ env.rust_stable }} | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ env.rust_stable }} | |
- uses: Swatinem/rust-cache@v2 | |
# Test **all** crates in the workspace with all features. | |
- name: test all --all-features | |
run: | | |
cargo test --workspace --all-features | |
# Basic actions that must pass before we kick off more expensive tests. | |
basics: | |
name: basic checks | |
runs-on: ubuntu-latest | |
needs: | |
- clippy | |
- fmt | |
steps: | |
- run: exit 0 | |
fmt: | |
name: fmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust ${{ env.rust_stable }} | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ env.rust_stable }} | |
components: rustfmt | |
- uses: Swatinem/rust-cache@v2 | |
# Check fmt | |
- name: "rustfmt --check" | |
# Workaround for rust-lang/cargo#7732 | |
run: | | |
if ! rustfmt --check --edition 2021 $(git ls-files '*.rs'); then | |
printf "Please run \`rustfmt --edition 2021 \$(git ls-files '*.rs')\` to fix rustfmt errors.\nSee CONTRIBUTING.md for more details.\n" >&2 | |
exit 1 | |
fi | |
clippy: | |
name: clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust ${{ env.rust_clippy }} | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ env.rust_clippy }} | |
components: clippy | |
- uses: Swatinem/rust-cache@v2 | |
# Run clippy | |
- name: "clippy --all" | |
run: cargo clippy --all --tests --all-features --no-deps |