name: CI on: push: branches: - "**" paths-ignore: - "README.md" - "CONTRIBUTING.md" - "README.zh.md" - "docs/**" - "install" concurrency: group: ci-${{ github.ref }} cancel-in-progress: true jobs: fmt: name: Format runs-on: macos-latest env: RUST_BACKTRACE: "1" steps: - uses: actions/checkout@v6 - name: Install Rust uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: Cache Rust uses: Swatinem/rust-cache@v2 - name: cargo fmt run: cargo fmt --all -- --check clippy: name: Clippy runs-on: macos-latest env: RUST_BACKTRACE: "1" steps: - uses: actions/checkout@v6 - name: Install Rust uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Cache Rust uses: Swatinem/rust-cache@v2 - name: cargo clippy run: cargo clippy --all-targets --all-features -- -D warnings build: name: Build runs-on: macos-latest env: RUST_BACKTRACE: "1" steps: - uses: actions/checkout@v6 - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Cache Rust uses: Swatinem/rust-cache@v2 - name: cargo build run: cargo build --locked test: name: Test runs-on: macos-latest env: RUST_BACKTRACE: "full" steps: - uses: actions/checkout@v6 - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Cache Rust uses: Swatinem/rust-cache@v2 - name: cargo test run: cargo test --locked coverage: name: Coverage runs-on: macos-latest needs: [fmt, clippy, build, test] env: RUST_BACKTRACE: "full" steps: - uses: actions/checkout@v6 - name: Install Rust uses: dtolnay/rust-toolchain@stable with: components: llvm-tools-preview - name: Cache Rust uses: Swatinem/rust-cache@v2 - name: Install cargo-llvm-cov uses: taiki-e/install-action@v2 with: tool: cargo-llvm-cov - name: cargo llvm-cov run: cargo llvm-cov --locked --features mock-vm --tests -- --nocapture