Files
announcement/.github/workflows/ci.yml
T
swaits 319cd3b6cb
CI / Test (beta, Linux) (push) Canceled after 0s
CI / Test (nightly, Linux) (push) Canceled after 0s
CI / Test (stable, Linux) (push) Canceled after 0s
CI / Test (macos-latest) (push) Canceled after 0s
CI / Test (windows-latest) (push) Canceled after 0s
CI / Rustfmt (push) Canceled after 0s
CI / Clippy (push) Canceled after 0s
CI / MSRV (push) Canceled after 0s
CI / Documentation (push) Canceled after 0s
CI / Coverage (push) Canceled after 0s
CI / Security Audit (push) Canceled after 0s
CI / Fuzz Testing (push) Canceled after 0s
CI / Examples (push) Canceled after 0s
CI / Benchmarks (push) Canceled after 0s
fix: disable tests on macos+windows and mutation testing in CI
2025-10-13 20:22:46 -06:00

217 lines
5.6 KiB
YAML

name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 0 * * 0' # Weekly security audit
env:
RUST_BACKTRACE: 1
jobs:
# Comprehensive testing on Linux (stable, beta, nightly)
test-linux:
name: Test (${{ matrix.rust }}, Linux)
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
rust:
- stable
- beta
- nightly
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Test (all features)
run: cargo nextest run --no-fail-fast --all-features
- name: Test (no default features)
run: cargo nextest run --no-fail-fast --no-default-features
- name: Test (std only)
run: cargo nextest run --no-fail-fast --no-default-features --features std
- name: Test (with tracing)
run: cargo nextest run --no-fail-fast --features std,tracing
# Cross-platform smoke tests (basic test to catch platform-specific issues)
test-cross-platform:
name: Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Install nextest
uses: taiki-e/install-action@nextest
# Just run basic tests with all features
- name: Test (all features)
run: cargo nextest run --no-fail-fast --all-features
# Code quality checks
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- run: cargo clippy --all-features -- -D warnings
# MSRV verification
msrv:
name: MSRV
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install cargo-msrv
uses: taiki-e/install-action@v2
with:
tool: cargo-msrv
- name: Verify MSRV
run: cargo msrv verify
# Documentation
doc:
name: Documentation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo doc --all-features --no-deps
- run: cargo test --doc
# Code coverage
coverage:
name: Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@v2
with:
tool: cargo-llvm-cov
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Generate coverage
run: cargo llvm-cov nextest --all-features --lcov --output-path lcov.info
- name: Upload coverage
uses: codecov/codecov-action@v3
with:
files: lcov.info
# Security audit
audit:
name: Security Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rustsec/audit-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
# Fuzz testing (short runs to catch obvious issues)
fuzz:
name: Fuzz Testing
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- name: Install cargo-fuzz
run: cargo install cargo-fuzz
- name: Fuzz announce operations
run: cargo +nightly fuzz run fuzz_announce -- -runs=10000 -max_total_time=60
- name: Fuzz close operations
run: cargo +nightly fuzz run fuzz_close -- -runs=10000 -max_total_time=60
- name: Fuzz listen operations
run: cargo +nightly fuzz run fuzz_listen -- -runs=10000 -max_total_time=60
- name: Fuzz concurrent operations
run: cargo +nightly fuzz run fuzz_concurrent -- -runs=1000 -max_total_time=120
- name: Build all fuzz targets
run: cargo +nightly fuzz build
# Examples verification
examples:
name: Examples
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Check examples compile
run: cargo build --examples
- name: Run guide examples
run: |
cargo run --example 01_basic_usage || true
cargo run --example 02_async_listening || true
cargo run --example 03_multiple_listeners || true
cargo run --example 04_efficient_broadcasting || true
cargo run --example 05_blocking_operations || true
- name: Run advanced examples
run: |
cargo run --example shutdown || true
cargo run --example config_broadcast || true
cargo run --example lazy_init || true
# Benchmarks (just verify they compile)
benchmarks:
name: Benchmarks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Check benchmarks compile
run: cargo bench --no-run
# Optional: Miri (disabled by default - uncomment to enable)
# Very slow but thorough undefined behavior detection
# miri:
# name: Miri
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - uses: dtolnay/rust-toolchain@nightly
# with:
# components: miri
# - run: cargo miri test --all-features