From c89c46b19e3d9df7c82a4c064a7ea6c3efd3458b Mon Sep 17 00:00:00 2001 From: prql-bot <107324867+prql-bot@users.noreply.github.com> Date: Mon, 10 Aug 2026 06:58:49 +0000 Subject: [PATCH 1/3] ci: run the raku grammar tests --- .github/workflows/tests.yaml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 4c9c9984e911..49cc9a66e9e1 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -523,8 +523,8 @@ jobs: token: cab4ace5-4f10-4027-8b5c-d79722234571 test-grammars: - # Currently tests lezer grammars. We could split that out into a separate - # job if we want when we add more. + # Tests the lezer & raku grammars. We could split these into separate jobs + # if we want when we add more. runs-on: ubuntu-24.04 needs: rules if: @@ -540,12 +540,24 @@ jobs: - name: Install dependencies working-directory: grammars/prql-lezer/ run: bun install - - name: Build grammar + - name: Build lezer grammar working-directory: grammars/prql-lezer/ run: bun run build - - name: Test grammar + - name: Test lezer grammar working-directory: grammars/prql-lezer/ run: bun run test + - name: 🦋 Setup Raku + uses: Raku/setup-raku@v1 + - name: Test raku grammar + working-directory: grammars/raku/ + # `raku` only takes a single script, so we loop rather than passing the + # whole glob. `run` defaults to `bash -e`, so the first failing test + # fails the step. + run: | + for t in t/*.rakutest; do + echo "== $t" + raku -I lib "$t" + done build-devcontainer: needs: rules From e8ce7d1142b3d359b03e413b4b602af61338a21e Mon Sep 17 00:00:00 2001 From: prql-bot <107324867+prql-bot@users.noreply.github.com> Date: Mon, 10 Aug 2026 08:32:02 +0000 Subject: [PATCH 2/3] ci: use prove6 to run the raku grammar tests --- .github/workflows/tests.yaml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 49cc9a66e9e1..04c6267cbf9a 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -548,16 +548,14 @@ jobs: run: bun run test - name: 🦋 Setup Raku uses: Raku/setup-raku@v1 + # `prove6` is the TAP harness that runs the whole `t/` directory in one + # command, as `grammars/raku/README.md` documents. `zef` ships with the + # rakudo archive that `setup-raku` installs. + - name: Install prove6 + run: zef install App::Prove6 - name: Test raku grammar working-directory: grammars/raku/ - # `raku` only takes a single script, so we loop rather than passing the - # whole glob. `run` defaults to `bash -e`, so the first failing test - # fails the step. - run: | - for t in t/*.rakutest; do - echo "== $t" - raku -I lib "$t" - done + run: prove6 --lib t/ build-devcontainer: needs: rules From e6161a7f53accf89f009a02291beca153c3f4035 Mon Sep 17 00:00:00 2001 From: prql-bot <107324867+prql-bot@users.noreply.github.com> Date: Mon, 10 Aug 2026 08:44:07 +0000 Subject: [PATCH 3/3] ci: skip dependency tests when installing prove6 --- .github/workflows/tests.yaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 04c6267cbf9a..bd90f5fc5cd1 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -551,8 +551,14 @@ jobs: # `prove6` is the TAP harness that runs the whole `t/` directory in one # command, as `grammars/raku/README.md` documents. `zef` ships with the # rakudo archive that `setup-raku` installs. + # + # `--/test` skips the test suites of `App::Prove6` and its transitive + # deps, which `zef` would otherwise run before installing. The README + # recipe deliberately omits it — a human installing locally wants those + # to run; here they'd only turn the job red for reasons unrelated to the + # PRQL grammar. - name: Install prove6 - run: zef install App::Prove6 + run: zef install --/test App::Prove6 - name: Test raku grammar working-directory: grammars/raku/ run: prove6 --lib t/