name: CI on: push: branches: ["main"] paths: - grammar.js - src/** - test/** - bindings/** - binding.gyp pull_request: concurrency: group: ${{github.workflow}}-${{github.ref}} cancel-in-progress: true jobs: test: name: Test parser runs-on: ${{matrix.os}} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-14] steps: - uses: actions/checkout@v4 - uses: tree-sitter/setup-action/cli@v1 - uses: tree-sitter/parser-test-action@v2 with: generate: ${{runner.os == 'Linux'}} fuzz: name: Fuzz parser runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 2 - name: Check for scanner changes id: scanner-changes run: |- if git diff --quiet HEAD^ -- src/scanner.c; then printf 'changed=false\n' >> "$GITHUB_OUTPUT" else printf 'changed=true\n' >> "$GITHUB_OUTPUT" fi - name: Fuzz parser uses: tree-sitter/fuzz-action@v4 if: steps.scanner-changes.outputs.changed == 'true'