name: CI on: push: branches: [main] pull_request: jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@1.86.0 with: components: clippy, rustfmt - uses: Swatinem/rust-cache@v2 - run: cargo fmt --check # libfreemkv is a library — Cargo.lock is gitignored. --locked # would always fail on a fresh runner because there's no committed # lockfile to lock against. The binary crates (freemkv, autorip, # bdemu) track Cargo.lock and DO use --locked. - run: cargo clippy -- -D warnings test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@1.86.0 - uses: Swatinem/rust-cache@v2 - run: cargo test --tests check-macos: runs-on: macos-latest steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@1.86.0 - uses: Swatinem/rust-cache@v2 - run: cargo check check-windows: runs-on: windows-latest steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@1.86.0 - uses: Swatinem/rust-cache@v2 # Build the tests (not just `cargo check`): catches errors in test # code and forces full codegen of the Windows-only SPTI transport # (src/scsi/windows.rs), which never compiles on the Linux/macOS dev # hosts. We don't `cargo test` here — the suite needs no drive but the # extra build is the value; running tests is covered by the Linux job. - run: cargo build --tests