refactor(config-test): срезан разбор Bash — он не ловил ничего #59

Merged
ddmitry merged 1 commits from refactor/config-test-bez-razbora-bash into main 2026-08-06 17:24:02 +03:00
Owner

Находка холодного ревью #58, вынесенная за границы той задачи.

Что было не так

make config-test обещал проверку синтаксиса Bash, но bash -n со списком
файлов разбирает только первый — остальные уходят ему в аргументы. Из пяти
скриптов репозитория проверялся один, произвольный: порядок задаёт find.
Проверено отдельно — заведомо сломанный второй файл проходит зелёным.

Сломано это было с рождения цели, и за всё её время никто не заметил: ловить
ей было нечего.

Почему срезано, а не починено

Чинилось бы циклом в одну строку. Но то, ради чего проверка заведена,
покрывается запуском самих скриптов: их гоняют с этой же машины, make smoke
запускает stand-smoke.sh, make check-servicesstand-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; в карте записано, почему заводить её заново не стоит.
ddmitry added 1 commit 2026-08-06 17:00:38 +03:00
- Зачем:
  - проверка была сломана с рождения цели: 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 main 2026-08-06 17:24:02 +03:00
ddmitry deleted branch refactor/config-test-bez-razbora-bash 2026-08-06 17:24:03 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ddmitry/clickstream-data-platform#59