Files
transcriber/tasks/items/metaviewer-adapter-tests.md
T
av 8739b18a9f tasks: очередь расставлена от базы к деталям
- порядок беклога и роадмапа назначен слоями: проверки, которым можно
  верить → долги входа → владелец записи и контракт API → конвейер под
  тестами → приложение и возможности поверх; у каждого движения записана
  причина;
- заведены восемь задач под пункты «Завершения», которых не закрывала ни
  одна запись, — цель any-audio-source была без задач вовсе;
- у четырёх задач сняты критерии, требовавшие того, что делает задача ниже
  по очереди; исправлены ссылки на несуществующий repo/sqlite и на
  отменённую разведку об очереди.
2026-08-12 20:48:53 +03:00

2.9 KiB
Raw Blame History

🧹 Покрыть тестами разбор вывода ffprobe

  • Тип: chore
  • Категория: Очередь — Разбор вывода ffprobe не проверяет ничто, а приём видео его расширяет.
  • Зачем: Проверки приёма перестали звать настоящий ffprobe 2026-08-11, а своего теста у адаптера метаданных нет: разбор JSON и отличие «программы нет в PATH» от «обработка отказала» не проверяет ничто.
  • Теги: review-2026-08-11

До 2026-08-11 настоящий ffprobe звали проверки приёма — правда, звали так, что он всегда отказывал, то есть проверяли отказ и выдавали его за успех. Теперь приём получает длительность от подставного источника, а у самого адаптера своего теста нет: разбор JSON, перевод длительности из строки в секунды и отличие «программы нет в PATH» от «обработка отказала» не проверяет ничто.

Решение и его цена записаны в ADR-2026-08-11-stub-adapters-in-tests; дыра названа в review.md, «Перестали проверять сознательно».

Затрагивает

  • internal/adapter/metaviewer/ffmpeg — новый тестовый файл.

Критерии приёмки

  • Разбор годного вывода ffprobe проверен без запуска самой программы: длина в секундах получается из заданного JSON. Оракул — тест на подставленном выводе.
  • Отсутствие программы в PATH даёт отличимую ошибку, а не ту же, что отказ обработки. Оракул — прогон с PATH, не содержащим ffprobe: текст ошибки называет именно ненайденную программу.
  • Вырожденный вывод — пустой, без поля длительности, с нечисловой строкой — не превращается в нулевую длительность молча. Оракул — тест на трёх таких входах, каждый даёт ошибку.

Рамки

Проверка на настоящей записи здесь не заводится: она требует файла в репозитории, а testdata в проекте нет. Если такая проверка нужна, это своё решение и своя задача.