Skip to content

Commit bc73ced

Browse files
chore: exclude test fixtures from the sql-sop dogfooding pre-commit hook (#51)
The .pre-commit-config.yaml ran sql-sop with `--severity error` against every `*.sql` file in the repo. The only SQL files currently in the repo are the unit-test fixtures under tests/fixtures/ -- and those fixtures deliberately contain bad SQL (E001 DELETE without WHERE, E002 DROP without IF EXISTS, E003 GRANT/REVOKE, E004 string concatenation in WHERE, E005 INSERT without column list, E006 UPDATE without WHERE, plus warning- and structural-rule fixtures) so the rule unit tests can assert on those exact patterns. Result: pre-commit.ci has been reporting "Found 6 issues (6 errors) in 1 file" against tests/fixtures/errors.sql on every single PR for months. The pre-commit-ci status has been red the whole time but hidden behind the also-always-red validate check (just fixed by #50); on PRs that don't touch SQL fixtures, the dogfooding hook adds no diagnostic value because the failures are by design. Adding `exclude: ^tests/fixtures/` so the hook only runs against real SQL files outside the fixtures tree. No real .sql files exist in the repo today, so the hook is effectively dormant; the moment someone adds a migration script or an example query outside tests/fixtures/ it kicks in. Verified locally that the exclude pattern matches all four fixture files (clean.sql, contract_drift.sql, errors.sql, warnings.sql).
1 parent 845b8bf commit bc73ced

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

.pre-commit-config.yaml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,16 @@ repos:
3737
- id: ruff-format
3838

3939
# ── sql-sop dogfooding itself ─────────────────────────────────────
40-
# Runs sql-sop on the project's own fixtures + any staged .sql files
41-
# so a regression in a rule is caught before it ships.
40+
# Runs sql-sop on staged .sql files so a regression in a rule is
41+
# caught before it ships. Test fixtures under ``tests/fixtures/`` are
42+
# excluded because those files deliberately contain bad SQL
43+
# (E001..E006, S001..S003, etc.) to drive the rule unit tests --
44+
# running the linter against them is guaranteed to fail and was
45+
# turning pre-commit.ci red on every PR.
4246
- repo: https://github.com/Pawansingh3889/sql-guard
4347
rev: v0.7.0
4448
hooks:
4549
- id: sql-sop
4650
args: [--severity, error]
4751
files: \.sql$
52+
exclude: ^tests/fixtures/

0 commit comments

Comments
 (0)