[2026-09-26] eagle: personal/plans/music-tags-review/1-needs-decision.md personal/plans/music-tags-review/2-medium-confidence.md personal/plans/music-tags-review/3-high-confidence.md personal/plans/music-tags-review/music-tags-review.md personal/projects/balda/balda-mattermost-connector.md personal/tech/balda-go-fx-pitfalls.md
This commit is contained in:
1 parent
519f7c443c
commit
14e9f5703f
6 files changed
+25992
No files matched your search
@@ -1119,6 +1119,47 @@ MM отвечал раз в 30 секунд, ровно на каждый пин
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Тест-ассерт — это гипотеза, а не истина (PR-проход 2026-09-26)
|
||||
|
||||
Дважды за сессию падал **новый** тест, и оба раза неверным оказывался **ассерт**,
|
||||
а не код. Соблазн «поправить код под тест» — прямой путь сломать работающее.
|
||||
|
||||
| Падающий тест | Моя гипотеза | Реальность |
|
||||
|---|---|---|
|
||||
| «тред и корневой пост дают одну сессию» | тред — часть канальной сессии | тред — **отдельная** сессия: корневой пост = `mm-c-a4aa02ef`, тред = `mm-t-89bbf64f`; при этом два **разных** ответа в треде дают ОДНУ сессию `mm-t-89bbf64f` — это и есть контракт |
|
||||
| «`NewIngress` фолбэчит `botUserID` из клиента» | есть fallback | `onStart` **отказывается стартовать** без `bot_user_id` (guard в ingress.go) |
|
||||
|
||||
**Процедура при падении нового теста:**
|
||||
1. Написать одноразовый пробник, печатающий **фактическое** поведение
|
||||
(`t.Logf` всех вариантов), а не утверждающий желаемое.
|
||||
2. Сверить с комментарием/доком функции — там часто уже написано, чему код
|
||||
**обязан** соответствовать.
|
||||
3. Только потом решать: ассерт или код.
|
||||
|
||||
⚠️ Пробник класть в пакет и **удалять** после (`rm mm_locator_probe_test.go`) —
|
||||
иначе мусор в PR.
|
||||
|
||||
## 🔴 `goconst` / `dupword` в новых тестах
|
||||
|
||||
`golangci-lint` валит даже тестовые файлы. На MM-тестах поймано 4 замечания,
|
||||
все — в моём новом коде:
|
||||
|
||||
| Линтер | Что | Фикс |
|
||||
|---|---|---|
|
||||
| `goconst` | `"channel-1"` — 15 вхождений, `"user-1"` — 3, `"dm-channel-1"` — 3 | константы `testTeamID`/`testChannelID`/`testDMChannelID`/`testUserID` в пакете |
|
||||
| `dupword` | `"thread channel = %q, channel channel = %q"` — повтор слова `channel` | переформулировать: «thread and channel locators resolve to different channels» |
|
||||
|
||||
📌 Линтер **подсказывает** имя существующей константы:
|
||||
`string 'channel-1' has 4 occurrences, but such constant 'testChannelID' already exists`.
|
||||
Заводить константы сразу при написании тестов дешевле, чем добивать потом.
|
||||
|
||||
## 📌 Артефакты деплоя — вон из PR
|
||||
|
||||
`tools/mm-*.sh` (9 ops-скриптов) и `tools/deltas-*.json` (15 файлов дельта-групп)
|
||||
— **локальный инструментарий**, в PR в апстрим не идут. Оставлять
|
||||
незакоммиченными и явно перечислять в доке, чтобы не потерять.
|
||||
В коммиты PR шли только: код транспорта, wiring, тесты, доки.
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[personal/projects/balda/balda-mattermost-connector]] — Фаза 2, где всё это найдено
|
||||
|
||||
Reference in new issue
Block a user