Skip to content

Merge pull request #5 from magaransoft/feat/prune-and-error-ux #28

Merge pull request #5 from magaransoft/feat/prune-and-error-ux

Merge pull request #5 from magaransoft/feat/prune-and-error-ux #28

Workflow file for this run

name: ci
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
hook-tests:
name: hook tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: setup python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: install pytest
run: pip install pytest
- name: install jq (linux)
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get update && sudo apt-get install -y jq
- name: install jq (macos)
if: matrix.os == 'macos-latest'
run: brew install jq
- name: run hook tests
run: bash hooks/tests/run.sh
harness-tests:
name: harness + proxy smoke (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: setup node
uses: actions/setup-node@v4
with:
node-version: '20'
- name: run harness + proxy smoke tests
run: node --test bin/tool-harness.test.js bin/tool-server-proxy.test.js
fixture-probe:
name: fixture probe (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: setup node
uses: actions/setup-node@v4
with:
node-version: '20'
- name: setup python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: install language servers
run: |
npm i -g pyright typescript-language-server typescript
- name: install formatter tools (opt-in wrappers)
run: |
npm i -g prettier eslint
- name: install jq (linux)
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get update && sudo apt-get install -y jq
- name: install jq (macos)
if: matrix.os == 'macos-latest'
run: brew install jq
- name: install jdtls (macos)
if: matrix.os == 'macos-latest'
run: brew install jdtls
- name: install wrapper symlinks into ~/.claude
run: |
mkdir -p ~/.claude
./scripts/install.sh
- name: probe fixtures + diff baselines (shape-gate)
# Body-sha check gated behind VERIFY_STRICT_SHA — CI runners install
# the latest pyright/ts-ls/csharp-ls/jdtls, which can emit
# version-specific serialization differences even when semantics
# are identical. Shape (top_level + total_nodes counts) still
# hard-fails on structural regressions; sha drift warns.
run: bash scripts/verify.sh --diff-baselines
opt-in-probe:
name: opt-in wrapper smoke (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: setup node
uses: actions/setup-node@v4
with:
node-version: '20'
- name: setup python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: install jq (linux)
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get update && sudo apt-get install -y jq
- name: install jq (macos)
if: matrix.os == 'macos-latest'
run: brew install jq
- name: install prettier + eslint
run: npm i -g prettier eslint
- name: install dotnet (macos)
if: matrix.os == 'macos-latest'
uses: actions/setup-dotnet@v4
with:
dotnet-version: '9.0.x'
- name: install dotnet (linux)
if: matrix.os == 'ubuntu-latest'
uses: actions/setup-dotnet@v4
with:
dotnet-version: '9.0.x'
- name: install sbt (macos)
if: matrix.os == 'macos-latest'
run: brew install sbt
- name: install sbt (linux)
if: matrix.os == 'ubuntu-latest'
run: |
sudo mkdir -p /etc/apt/keyrings
curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" \
| sudo gpg --dearmor -o /etc/apt/keyrings/sbt.gpg
echo "deb [signed-by=/etc/apt/keyrings/sbt.gpg] https://repo.scala-sbt.org/scalasbt/debian all main" \
| sudo tee /etc/apt/sources.list.d/sbt.list
sudo apt-get update
sudo apt-get install -y sbt
- name: install wrapper symlinks into ~/.claude
run: |
mkdir -p ~/.claude
./scripts/install.sh
- name: smoke prettier-direct
run: |
bin/prettier-direct call format-file \
"{\"filepath\":\"$PWD/fixtures/node-formatter/hello.ts\"}" \
"$PWD/fixtures/node-formatter"
- name: smoke eslint-direct
run: |
bin/eslint-direct call version '{}' "$PWD/fixtures/node-formatter"
- name: smoke dotnet-direct
run: |
bin/dotnet-direct call version '{}' "$PWD/fixtures/dotnet-csproj"
- name: smoke sbt-direct (non-fatal — sbt cold JVM may be slow on CI)
continue-on-error: true
run: |
bin/sbt-direct call version '{}' "$PWD/fixtures/scala-sbt"