Находка холодного ревью #58, вынесенная за границы той задачи.
Что было не так
make config-test обещал проверку синтаксиса Bash, но bash -n со списком
файлов разбирает только первый — остальные уходят ему в аргументы. Из пяти
скриптов репозитория проверялся один, произвольный: порядок задаёт find.
Проверено отдельно — заведомо сломанный второй файл проходит зелёным.
Сломано это было с рождения цели, и за всё её время никто не заметил: ловить
ей было нечего.
Почему срезано, а не починено
Чинилось бы циклом в одну строку. Но то, ради чего проверка заведена,
покрывается запуском самих скриптов: их гоняют с этой же машины, make smoke
запускает stand-smoke.sh, make check-services — stand-services.sh, и
синтаксическая ошибка вылезает при первом же запуске, громко и с номером
строки. Учебной ценности для менти в ней нет: из неё не узнаёшь ничего, кроме
того, что у bash есть ключ -n.
Держалась она при этом не строчкой, а двенадцатью: обход репозитория с
исключением .git, временный файл со списком, mapfile и две ветки на
«список пустой». scripts/config-test.sh — 53 строки было, 40 стало.
Что осталось и почему
Compose — ошибку в подстановке или структуре compose.yaml иначе видно
только при make up, а это минуты и поднятые контейнеры.
Файлы DAG — основание другое и сильнее: на машине их не запускает никто,
разбирает обработчик внутри контейнера, и синтаксическая ошибка всплывает не
сообщением, а тем, что DAG молча не появился в списке. Локальный разбор —
единственная дешёвая обратная связь. Основание записано комментарием в самом
скрипте.
Пробельные ошибки в diff — без изменений.
Проверка
make config-test зелёный.
Оставшийся разбор DAG краснеет: незакрытая скобка в dags/test_kafka.py
роняет цель с SyntaxError и ненулевым кодом возврата. Файл восстановлен,
дерево чистое.
README и docs/architecture/testing.md больше не обещают проверку синтаксиса
Bash; в карте записано, почему заводить её заново не стоит.
Находка холодного ревью #58, вынесенная за границы той задачи.
## Что было не так
`make config-test` обещал проверку синтаксиса Bash, но `bash -n` со списком
файлов разбирает только первый — остальные уходят ему в аргументы. Из пяти
скриптов репозитория проверялся один, произвольный: порядок задаёт `find`.
Проверено отдельно — заведомо сломанный второй файл проходит зелёным.
Сломано это было с рождения цели, и за всё её время никто не заметил: ловить
ей было нечего.
## Почему срезано, а не починено
Чинилось бы циклом в одну строку. Но то, ради чего проверка заведена,
покрывается запуском самих скриптов: их гоняют с этой же машины, `make smoke`
запускает `stand-smoke.sh`, `make check-services` — `stand-services.sh`, и
синтаксическая ошибка вылезает при первом же запуске, громко и с номером
строки. Учебной ценности для менти в ней нет: из неё не узнаёшь ничего, кроме
того, что у bash есть ключ `-n`.
Держалась она при этом не строчкой, а двенадцатью: обход репозитория с
исключением `.git`, временный файл со списком, `mapfile` и две ветки на
«список пустой». `scripts/config-test.sh` — 53 строки было, 40 стало.
## Что осталось и почему
- **Compose** — ошибку в подстановке или структуре `compose.yaml` иначе видно
только при `make up`, а это минуты и поднятые контейнеры.
- **Файлы DAG** — основание другое и сильнее: на машине их не запускает никто,
разбирает обработчик внутри контейнера, и синтаксическая ошибка всплывает не
сообщением, а тем, что DAG молча не появился в списке. Локальный разбор —
единственная дешёвая обратная связь. Основание записано комментарием в самом
скрипте.
- **Пробельные ошибки в diff** — без изменений.
## Проверка
- `make config-test` зелёный.
- Оставшийся разбор DAG краснеет: незакрытая скобка в `dags/test_kafka.py`
роняет цель с `SyntaxError` и ненулевым кодом возврата. Файл восстановлен,
дерево чистое.
README и `docs/architecture/testing.md` больше не обещают проверку синтаксиса
Bash; в карте записано, почему заводить её заново не стоит.
- Зачем:
- проверка была сломана с рождения цели: bash -n со списком файлов
разбирает только первый, остальные уходят ему в аргументы. Из пяти
скриптов проверялся один, и за всё время этого никто не заметил.
- чинить незачем: скрипты стенда запускают с той же машины, и
синтаксическая ошибка вылезает при первом же запуске с номером строки.
Учебной ценности в проверке нет — из неё не узнаёшь ничего, кроме того,
что у bash есть ключ -n.
- держалась она не строчкой, а двенадцатью: обход репозитория, временный
файл со списком, mapfile и две ветки на пустой список.
- Что:
- из scripts/config-test.sh убраны разбор Bash и весь аппарат сбора
списка файлов; 53 строки стали 40.
- разбор файлов DAG остался и получил комментарий с основанием: их на
машине не запускает никто, обработчик разбирает их внутри контейнера, и
ошибка всплывает не сообщением, а молча пропавшим DAG.
- README и карта проверок больше не обещают проверку синтаксиса Bash.
- в карте записано, почему проверку не стоит заводить заново.
- Проверка:
- make config-test зелёный.
- оставшийся разбор DAG краснеет: незакрытая скобка в dags/test_kafka.py
роняет цель с SyntaxError и ненулевым кодом; файл восстановлен.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ddmitry
merged commit 896c846cbc into main2026-08-06 17:24:02 +03:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Находка холодного ревью #58, вынесенная за границы той задачи.
Что было не так
make config-testобещал проверку синтаксиса Bash, ноbash -nсо спискомфайлов разбирает только первый — остальные уходят ему в аргументы. Из пяти
скриптов репозитория проверялся один, произвольный: порядок задаёт
find.Проверено отдельно — заведомо сломанный второй файл проходит зелёным.
Сломано это было с рождения цели, и за всё её время никто не заметил: ловить
ей было нечего.
Почему срезано, а не починено
Чинилось бы циклом в одну строку. Но то, ради чего проверка заведена,
покрывается запуском самих скриптов: их гоняют с этой же машины,
make smokeзапускает
stand-smoke.sh,make check-services—stand-services.sh, исинтаксическая ошибка вылезает при первом же запуске, громко и с номером
строки. Учебной ценности для менти в ней нет: из неё не узнаёшь ничего, кроме
того, что у bash есть ключ
-n.Держалась она при этом не строчкой, а двенадцатью: обход репозитория с
исключением
.git, временный файл со списком,mapfileи две ветки на«список пустой».
scripts/config-test.sh— 53 строки было, 40 стало.Что осталось и почему
compose.yamlиначе виднотолько при
make up, а это минуты и поднятые контейнеры.разбирает обработчик внутри контейнера, и синтаксическая ошибка всплывает не
сообщением, а тем, что DAG молча не появился в списке. Локальный разбор —
единственная дешёвая обратная связь. Основание записано комментарием в самом
скрипте.
Проверка
make config-testзелёный.dags/test_kafka.pyроняет цель с
SyntaxErrorи ненулевым кодом возврата. Файл восстановлен,дерево чистое.
README и
docs/architecture/testing.mdбольше не обещают проверку синтаксисаBash; в карте записано, почему заводить её заново не стоит.
- Зачем: - проверка была сломана с рождения цели: bash -n со списком файлов разбирает только первый, остальные уходят ему в аргументы. Из пяти скриптов проверялся один, и за всё время этого никто не заметил. - чинить незачем: скрипты стенда запускают с той же машины, и синтаксическая ошибка вылезает при первом же запуске с номером строки. Учебной ценности в проверке нет — из неё не узнаёшь ничего, кроме того, что у bash есть ключ -n. - держалась она не строчкой, а двенадцатью: обход репозитория, временный файл со списком, mapfile и две ветки на пустой список. - Что: - из scripts/config-test.sh убраны разбор Bash и весь аппарат сбора списка файлов; 53 строки стали 40. - разбор файлов DAG остался и получил комментарий с основанием: их на машине не запускает никто, обработчик разбирает их внутри контейнера, и ошибка всплывает не сообщением, а молча пропавшим DAG. - README и карта проверок больше не обещают проверку синтаксиса Bash. - в карте записано, почему проверку не стоит заводить заново. - Проверка: - make config-test зелёный. - оставшийся разбор DAG краснеет: незакрытая скобка в dags/test_kafka.py роняет цель с SyntaxError и ненулевым кодом; файл восстановлен. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>