oxc_coverage_instrument 0.3.2

Istanbul-compatible JavaScript/TypeScript coverage instrumentation using the Oxc AST
Documentation
name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

permissions: {}

concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true

env:
  CARGO_TERM_COLOR: always

jobs:
  check:
    name: Check (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    timeout-minutes: 30
    permissions:
      contents: read
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy, rustfmt
      - name: Run tests
        run: cargo test --workspace --all-targets
      - name: Run doc-tests
        run: cargo test --workspace --doc
      - name: Clippy
        run: cargo clippy --workspace --all-targets -- -D warnings
      - name: Format
        run: cargo fmt --all --check
      - name: Check for uncommitted changes
        run: git diff --exit-code

  msrv:
    name: MSRV
    runs-on: ubuntu-latest
    timeout-minutes: 15
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v6
      - name: Read MSRV from Cargo.toml
        id: msrv
        run: |
          MSRV=$(grep 'rust-version' Cargo.toml | head -1 | sed 's/.*"\(.*\)"/\1/')
          echo "version=$MSRV" >> "$GITHUB_OUTPUT"
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ steps.msrv.outputs.version }}
      - name: Check MSRV
        run: cargo check --workspace

  doc:
    name: Documentation
    runs-on: ubuntu-latest
    timeout-minutes: 15
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - name: Check documentation
        env:
          RUSTDOCFLAGS: "-D warnings"
        run: cargo doc --no-deps --document-private-items

  typos:
    name: Typos
    runs-on: ubuntu-latest
    timeout-minutes: 5
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v6
      - uses: crate-ci/typos@v1

  deny:
    name: Cargo Deny
    runs-on: ubuntu-latest
    timeout-minutes: 10
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v6
      - uses: EmbarkStudios/cargo-deny-action@v2

  napi:
    name: Napi Test
    runs-on: ubuntu-latest
    timeout-minutes: 15
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - uses: actions/setup-node@v6
        with:
          node-version: 22
      - name: Install dependencies
        working-directory: napi
        run: npm ci || npm install
      - name: Build napi binding
        working-directory: napi
        run: npx napi build --platform
      - name: Run napi tests
        working-directory: napi
        run: node test.mjs