refactor: tool-harness + sbt/dotnet/formatter wrappers (v1.2.0) #12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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: probe fixtures + diff baselines (strict — shape + sha + outline) | |
| env: | |
| VERIFY_STRICT_SHA: '1' | |
| 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: 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" |