name: Lint, Build and Test
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
MSRV:
runs-on: ubuntu-latest
env:
RUSTFLAGS: -D warnings
MSRV: 1.88.0
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.MSRV }}
targets: x86_64-pc-windows-gnu, x86_64-apple-darwin, x86_64-unknown-freebsd, x86_64-unknown-netbsd, aarch64-linux-android
components: rustfmt
- uses: Swatinem/rust-cache@v2
- name: Check build with MSRV
run: |
cargo --locked check --all-features
cargo --locked check --all-features --target x86_64-pc-windows-gnu
cargo --locked check --all-features --target x86_64-apple-darwin
cargo --locked check --all-features --target x86_64-unknown-freebsd
cargo --locked check --all-features --target x86_64-unknown-netbsd
cargo --locked check --all-features --target aarch64-linux-android
- name: Check build with each feature alone
run: |
cargo --locked check --no-default-features --features runtime
cargo --locked check --no-default-features --features event
cargo --locked check --no-default-features --features broadcast
cargo --locked check --no-default-features --features mpmc
cargo --locked check --no-default-features --features lock
cargo --locked check --no-default-features --features unblock
cargo --locked check --no-default-features --features fs
cargo --locked check --no-default-features --features tcp
cargo --locked check --no-default-features --features udp
cargo --locked check --no-default-features --features unix
cargo --locked check --no-default-features --features process
cargo --locked check --no-default-features --features unix --target x86_64-pc-windows-gnu
cargo --locked check --no-default-features --features process --target x86_64-pc-windows-gnu
fmt:
runs-on: ubuntu-latest
env:
RUSTFLAGS: -D warnings
RUST_BACKTRACE: full
RUST_LOG: trace
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: rustfmt
targets: x86_64-apple-darwin, x86_64-unknown-freebsd, x86_64-unknown-netbsd, x86_64-pc-windows-gnu, aarch64-linux-android
- uses: Swatinem/rust-cache@v2
- name: Check formatting
run: |
cargo --locked fmt -- --check
cargo --locked check --target x86_64-apple-darwin
cargo --locked check --target x86_64-unknown-freebsd
cargo --locked check --target x86_64-unknown-netbsd
cargo --locked check --target x86_64-pc-windows-gnu
cargo --locked check --target aarch64-linux-android
clippy:
runs-on: ubuntu-latest
env:
RUSTFLAGS: -D warnings
RUST_BACKTRACE: full
RUST_LOG: trace
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: clippy
targets: x86_64-apple-darwin, x86_64-unknown-freebsd, x86_64-unknown-netbsd, x86_64-pc-windows-gnu, aarch64-linux-android, wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
- name: Catch common mistakes and unwrap calls
run: |
cargo --locked clippy --all-targets --all-features
cargo --locked clippy --all-targets --all-features --target x86_64-apple-darwin
cargo --locked clippy --all-targets --all-features --target x86_64-unknown-freebsd
cargo --locked clippy --all-targets --all-features --target x86_64-unknown-netbsd
cargo --locked clippy --all-targets --all-features --target x86_64-pc-windows-gnu
cargo --locked clippy --all-targets --all-features --target aarch64-linux-android
- name: Catch common mistakes in the poll(2) and kqueue pollers
run: |
RUSTFLAGS="-D warnings --cfg zruntime_poll" cargo --locked clippy --all-targets --all-features
RUSTFLAGS="-D warnings --cfg zruntime_poll" cargo --locked clippy --all-targets --all-features --target x86_64-apple-darwin
RUSTFLAGS="-D warnings --cfg zruntime_poll" cargo --locked clippy --all-targets --all-features --target x86_64-unknown-freebsd
RUSTFLAGS="-D warnings --cfg zruntime_poll" cargo --locked clippy --all-targets --all-features --target x86_64-unknown-netbsd
RUSTFLAGS="-D warnings --cfg zruntime_poll" cargo --locked clippy --all-targets --all-features --target aarch64-linux-android
RUSTFLAGS="-D warnings --cfg zruntime_kqueue" cargo --locked clippy --all-targets --all-features --target x86_64-apple-darwin
- name: Catch common mistakes in the build for wasm32-unknown-unknown
run: cargo --locked clippy --no-default-features --features lock,broadcast,mpmc --target wasm32-unknown-unknown
test:
runs-on: ${{ matrix.os }}
needs: [fmt, clippy]
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
env:
RUSTFLAGS: -D warnings
RUST_BACKTRACE: full
RUST_LOG: trace
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.os }}
- name: Test with all features
run: cargo --locked test --all-features
- name: Test the runtime alone
run: cargo --locked test --no-default-features --features runtime
- name: Test on poll(2)
if: matrix.os == 'ubuntu-latest'
env:
RUSTFLAGS: -D warnings --cfg zruntime_poll
run: cargo --locked test --all-features
- name: Test on kqueue
if: matrix.os == 'macos-latest'
env:
RUSTFLAGS: -D warnings --cfg zruntime_kqueue
run: cargo --locked test --all-features
miri:
runs-on: ubuntu-latest
needs: [fmt, clippy]
env:
RUSTFLAGS: -D warnings
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: miri, rust-src
- uses: Swatinem/rust-cache@v2
- name: Test Event, the locks, the two channels and unblock under Miri
run: cargo --locked miri test --no-default-features --features lock,broadcast,mpmc,unblock
wasm:
runs-on: ubuntu-latest
needs: [fmt, clippy]
env:
RUSTFLAGS: -D warnings
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
with:
workspaces: ci/wasm
- name: Run the locks' waiting paths on wasm32-unknown-unknown
working-directory: ci/wasm
run: |
cargo --locked build --release --target wasm32-unknown-unknown
node run.mjs target/wasm32-unknown-unknown/release/zruntime_wasm_check.wasm
doc_build:
runs-on: ubuntu-latest
env:
RUSTDOCFLAGS: -D warnings
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
- name: Check documentation build
run: cargo --locked doc --all-features