Skip to content

test(wiring): fan-out RX из LoRa в оба Telegram-чата комнаты - #36

Merged
Flexlug merged 1 commit into
mainfrom
claude/peaceful-bun-dd648d
Jul 26, 2026
Merged

test(wiring): fan-out RX из LoRa в оба Telegram-чата комнаты#36
Flexlug merged 1 commit into
mainfrom
claude/peaceful-bun-dd648d

Conversation

@Flexlug

@Flexlug Flexlug commented Jul 26, 2026

Copy link
Copy Markdown
Owner

Что изменилось

Два интеграционных теста в tests/test_wiring_integration.py на существующей фикстуре _CFG_TWO_TG_SUBS (комната: 1 LoRa + чаты -100 и -200):

  • test_lora_rx_mirrors_to_both_tg_chats — RX из LoRa (ChannelRef("mc-1", "general") через bridge.consume) зеркалится в оба Telegram-чата комнаты, ровно по одному send в каждый.
  • test_mirror_failure_does_not_block_second_chat — исключение при зеркале в первый чат (-100 идёт первым по порядку комнаты) не мешает доставке во второй: Bridge.mirror_to_messenger глотает исключения per-member.

Зачем

Пробел покрытия: обратное направление (TG → LoRa → зеркало во второй чат после commit) покрыто, а fan-out RX из LoRa в несколько мессенджер-чатов — нет: все LoRa→TG тесты использовали комнату с одним подписчиком.

Ревьюеру

  • Production-код не тронут — только тесты (+65 строк).
  • Оба теста проверены mutation-check'ом: с break после первого зеркала первый падает (['-100'] != ['-100', '-200']), без try/except в mirror_to_messenger второй падает тем самым RuntimeError сквозь consume.
  • Во втором тесте journal.stop() в try/finally — осознанное отличие от стиля файла: при регрессии глотания исключение вылетает через task group, и незакрытый aiosqlite (не-daemon поток) вешал бы pytest на выходе вместо красного отчёта. Файловая чистка этой ловушки — LoRa-Bridge-bas.
  • fail=True у FakeTransport не подходил: он возвращает SendResult.failure, а не бросает, и путь глотания исключений не задел бы — поэтому send подменён через monkeypatch.
  • Сюита: 363 passed (4 прогона). Редкий PytestUnhandledThreadExceptionWarning (~1/4 прогонов) воспроизводится и на HEAD — предсуществующий флаки, заведён LoRa-Bridge-la9.

beads: LoRa-Bridge-hox (закрыт)

🤖 Generated with Claude Code

Закрывает пробел покрытия: LoRa→TG тестировался только с одним
подписчиком. Два теста на _CFG_TWO_TG_SUBS: зеркало приходит в оба
чата; падение зеркала в один чат не мешает доставке во второй
(per-member глотание исключений в Bridge.mirror_to_messenger).

Во втором тесте journal.stop() в finally: при регрессии глотания
исключение вылетает из task group, и незакрытый aiosqlite (не-daemon
поток) вешал бы pytest на выходе вместо красного отчёта.

beads: LoRa-Bridge-hox (закрыт), follow-up LoRa-Bridge-bas, LoRa-Bridge-la9

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Flexlug
Flexlug force-pushed the claude/peaceful-bun-dd648d branch from a0b6832 to f2b09fb Compare July 26, 2026 00:21
@Flexlug
Flexlug merged commit d1690a4 into main Jul 26, 2026
4 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