fix(check-file-length): корневой tests/ меряется порогами tests #32

Merged
claude-secretary merged 2 commits from fix/file-length-root-tests into main 2026-09-17 16:59:30 +07:00

Closes #31

Что было

Категоризация в scripts/check_file_length.sh сравнивала "$file" без ведущего слэша. Пути от pre-commit относительные, поэтому */tests/* не матчил tests/test_foo.py в корне репозитория — самую обычную раскладку. Тест мерился порогом src 300/500 вместо 600/1000 (так упал tests/test_release_mode.py на 593 строках в https://gitlab.homedevlab.ru/volody/dispatcher/-/issues/189).

Что сделано

  • Второй case переведён на "/$file" — та же форма, что у исключений блоком выше (v0.18.0). Граница по сегменту сохраняется: mytests/, contests/, testsuite/ остаются src.
  • Smoke (fixtures/run_smoke.sh):
    • tests/test_foo.py и pkg/tests/test_foo.py на 700 строк → exit 0 и WARN [700 lines >= 600] в stderr (по src это FAIL; текст отличает порог tests от молчаливого пропуска файла). Корневой кейс до фикса был красным — проверено;
    • mytests/, contests/, testsuite/ на 501 строку → exit 1 (негативный контроль).
    • Прогнано на мутантах: откат к "$file", *tests/*, */tests* — каждый ловится своим кейсом.
  • README: отметка «с v0.23.1» у категории tests/; шапка скрипта уточнена.
  • Версия 0.23.1 (bug-fix → patch), пины rev: в README и examples/.

Проверка

run_smoke.sh — 217 OK, check_version_tag.sh на ветке — OK, check_version_tag_cases.sh, check_grandfather_baseline.sh, check_wheel_matches_sources.py — зелёные. Независимое ревью субагентом — approve; три nit'а учтены в втором коммите.

После мержа

Тег v0.23.1 — за volody. Консьюмерам (jamzap/backend, jamzap/frontend, jamzap/mobile, jamzap/infra, volody/dispatcher) после релиза нужен бамп rev. При дефолтных порогах правка только поднимает порог для корневых тестов и покрасить ничего не может; исключение — консьюмер, у которого через env TESTS_* заданы ниже SRC_*.

🤖 Generated with Claude Code

Closes https://git.homedevlab.ru/senokosov/pre-commit-hooks/issues/31 ## Что было Категоризация в `scripts/check_file_length.sh` сравнивала `"$file"` без ведущего слэша. Пути от pre-commit относительные, поэтому `*/tests/*` не матчил `tests/test_foo.py` в корне репозитория — самую обычную раскладку. Тест мерился порогом src 300/500 вместо 600/1000 (так упал `tests/test_release_mode.py` на 593 строках в https://gitlab.homedevlab.ru/volody/dispatcher/-/issues/189). ## Что сделано - Второй `case` переведён на `"/$file"` — та же форма, что у исключений блоком выше (v0.18.0). Граница по сегменту сохраняется: `mytests/`, `contests/`, `testsuite/` остаются src. - Smoke (`fixtures/run_smoke.sh`): - `tests/test_foo.py` и `pkg/tests/test_foo.py` на 700 строк → exit 0 **и** `WARN [700 lines >= 600]` в stderr (по src это FAIL; текст отличает порог tests от молчаливого пропуска файла). Корневой кейс до фикса был красным — проверено; - `mytests/`, `contests/`, `testsuite/` на 501 строку → exit 1 (негативный контроль). - Прогнано на мутантах: откат к `"$file"`, `*tests/*`, `*/tests*` — каждый ловится своим кейсом. - README: отметка «с `v0.23.1`» у категории `tests/`; шапка скрипта уточнена. - Версия `0.23.1` (bug-fix → patch), пины `rev:` в README и `examples/`. ## Проверка `run_smoke.sh` — 217 OK, `check_version_tag.sh` на ветке — OK, `check_version_tag_cases.sh`, `check_grandfather_baseline.sh`, `check_wheel_matches_sources.py` — зелёные. Независимое ревью субагентом — approve; три nit'а учтены в втором коммите. ## После мержа Тег `v0.23.1` — за volody. Консьюмерам (`jamzap/backend`, `jamzap/frontend`, `jamzap/mobile`, `jamzap/infra`, `volody/dispatcher`) после релиза нужен бамп `rev`. При дефолтных порогах правка только поднимает порог для корневых тестов и покрасить ничего не может; исключение — консьюмер, у которого через env `TESTS_*` заданы ниже `SRC_*`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(check-file-length): корневой tests/ меряется порогами tests
All checks were successful
ci / smoke (push) Successful in 20s
ci / smoke (pull_request) Successful in 19s
10f20fd3c7
Категоризация сравнивала `$file` без ведущего слэша, и `*/tests/*` не
матчил `tests/test_foo.py` в корне репозитория: тест мерился порогом src
300/500 вместо 600/1000. Переведена на ту же форму `/$file`, что уже
принята для исключений. Граница по сегменту сохраняется — `mytests/` и
`contests/` остаются src.

Smoke: корневой и вложенный tests/, негативный контроль на похожие имена.
Версия 0.23.1, пины в README и примере.

Closes #31

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
test(check-file-length): порог tests закреплён текстом WARN, контроль testsuite/
All checks were successful
ci / smoke (push) Successful in 19s
ci / smoke (pull_request) Successful in 19s
43bb021ece
Положительные кейсы проверяли только exit 0 — тот же ответ дал бы пропуск
файла. Теперь фикстура 700 строк и строка WARN [700 lines >= 600] в stderr.
Негативный контроль дополнен testsuite/ против мутации */tests*.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
claude-secretary deleted branch fix/file-length-root-tests 2026-09-17 16:59:30 +07:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
senokosov/pre-commit-hooks!32
No description provided.