Skip to content

fix(ci): shellcheck SC2016 blokował pre-commit od 381265d - #32

Merged
mpasternak merged 1 commit into
mainfrom
fix/shellcheck-sc2016-waf-assert
Aug 6, 2026
Merged

fix(ci): shellcheck SC2016 blokował pre-commit od 381265d#32
mpasternak merged 1 commit into
mainfrom
fix/shellcheck-sc2016-waf-assert

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Problem

CI na main jest czerwone od wczoraj 18:21 (ostatni zielony: a05f216). Z sześciu jobów pada wyłącznie Pre-commit hooks — pozostałe pięć (Testy Makefile na Linuksie/Windows/macOS, testy runtime WAF, walidacja compose) przechodzi.

tests/test_makefile.sh:676:21: SC2016 (info):
  Expressions don't expand in single quotes, use double quotes for that.

Przyczyna i dlaczego to fałszywy alarm

Asercja pozycji parsera-zaślepki, dodana w 381265d, używa wzorca grep -E z \$__range / \$__interval. Te sekwencje mają zostać literalne — dopasowują tekst w JSON-ie Grafany. Pojedyncze cudzysłowy są więc celowe, a rozwinięcie zepsułoby asercję.

Wyciszenie w konwencji już obecnej w tym pliku czterokrotnie (linie 351, 430, 455, 504).

Dlaczego nie złapało tego lokalnie ani na żadnym PR-ze

CI odpala pre-commit run --all-files (ci.yml:59), a lokalny hook chodzi tylko po plikach z commita. Cztery kolejne commity nie dotykały test_makefile.sh, więc dziedziczyły czerwone CI bez własnej winy — w tym #31, na którym to zauważyłem.

Warto o tym wiedzieć na przyszłość: winę widać dopiero przez git log -S po treści linii, bo logi wskazują na commit, który akurat był następny.

Weryfikacja

  • symulacja CI (shellcheck -e SC1091,SC2086, te same wykluczenia co hook) — czysto;
  • asercja nadal działa, a nie tylko ucichła: PASS: waf.json: parser-zaslepka w 11 z 11 zapytan + PASS: ... jest ostatnim ogniwem kazdego potoku;
  • pełny zestaw: 225 passed, 0 failed, 0 skipped.

Diff to jedna linia komentarza — zero zmian w logice.

Uwaga na marginesie: lokalny shellcheck 0.11.0 zgłasza dodatkowo SC2329 w pięciu skryptach scripts/test-*.sh, ale CI pinuje 0.10.0.1, gdzie ta kontrola nie istnieje. Celowo tego nie ruszam — to osobna sprawa, która wypłynie dopiero przy podbiciu rev hooka.

🤖 Generated with Claude Code

https://claude.ai/code/session_01J35fM3toviqNDsGxRg6P1c

CI na main jest czerwone od wczoraj 18:21 (ostatni zielony: a05f216).
Pada wylacznie job "Pre-commit hooks" — pozostale piec (Testy Makefile na
Linuksie/Windows/macOS, testy runtime WAF, walidacja compose) przechodzi.

Przyczyna: asercja pozycji parsera-zaslepki dodana w 381265d uzywa wzorca
grep-a z `\$__range`/`\$__interval`, ktore MAJA zostac literalne — dopasowuja
tekst w JSON-ie Grafany. Pojedyncze cudzyslowy sa wiec celowe, a SC2016
("Expressions don't expand in single quotes") to falszywy alarm. Rozwiniecie
zepsuloby asercje.

Wyciszenie w konwencji juz obecnej w tym pliku czterokrotnie (linie 351, 430,
455, 504): `# shellcheck disable=SC2016  # to WZORZEC grep-a: ... literalne`.

Dlaczego nie zlapalo tego lokalnie ani na PR-ze: CI odpala `pre-commit run
--all-files` (ci.yml:59), a lokalny hook chodzi tylko po plikach z commita.
Cztery kolejne commity nie dotykaly test_makefile.sh, wiec dziedziczyly
czerwone CI bez wlasnej winy.

Zweryfikowane: symulacja CI (`shellcheck -e SC1091,SC2086`) czysta, asercja
nadal DZIALA (PASS: parser-zaslepka w 11 z 11 zapytan + PASS na pozycji
w potoku), pelny zestaw 225 passed / 0 failed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J35fM3toviqNDsGxRg6P1c
@mpasternak
mpasternak merged commit 2e8c130 into main Aug 6, 2026
10 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant