From 3d9f3719c56127811a665768465058509c7c3f36 Mon Sep 17 00:00:00 2001 From: bvolpato Date: Fri, 10 Jul 2026 19:05:23 -0400 Subject: [PATCH] ci: verify generated ANTLR parsers Regenerate committed parsers during PR checks and fail when output drifts. Track parser outputs so Pixi reruns generation after output changes. --- .github/workflows/pr.yml | 13 +++++++++++++ pyproject.toml | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 36d5eb777..b336671f9 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -49,6 +49,19 @@ jobs: cache: true - name: Compile protobuf run: pixi run generate-protobuf + antlr: + name: Check ANTLR Parsers + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - uses: prefix-dev/setup-pixi@v0.10.0 + with: + pixi-version: v0.66.0 + cache: true + - name: Generate ANTLR parsers + run: pixi run generate-antlr + - name: Check generated ANTLR parsers + run: git diff --exit-code -- tests/coverage/antlr_parser tests/type/antlr_parser yamllint: name: Lint YAML extensions runs-on: ubuntu-latest diff --git a/pyproject.toml b/pyproject.toml index e26bf9dea..cb08a7a07 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,7 +57,7 @@ nodejs = ">=24,<25" [tool.pixi.tasks] # code generation -generate-antlr = { cmd = "make all", cwd = "grammar", description = "Generate ANTLR Python parsers", inputs = ["grammar/*.g4"] } +generate-antlr = { cmd = "make all", cwd = "grammar", description = "Generate ANTLR Python parsers", inputs = ["grammar/*.g4"], outputs = ["tests/type/antlr_parser/*.py", "tests/coverage/antlr_parser/*.py"] } generate-protobuf = { cmd = "buf generate", description = "Generate protobuf Python code", inputs = ["proto/**/*.proto"], outputs = ["gen/proto/python/substrait/*.py"] } generate = { depends-on = ["generate-antlr", "generate-protobuf"] }