# Проверки не зовут внешних программ - **Дата:** 2026-08-11 - **Источник:** openspec/changes/archive/2026-08-11-fix-http-handler-tests/design.md ## Решение Тесты приёма получают длительность записи от подставного источника метаданных, а не от `ffprobe`. Годность содержимого судит адаптер, тест судит наш код. ## Почему Цитата из источника, раздел `Decisions`: > **проверять приём сквозь настоящий `ffprobe`.** Отвергнуто: это проверка > внешней программы, а не нашего кода. Она найдёт отказ `ffprobe` и не найдёт > ошибку в приёме — ровно наоборот тому, зачем эти тесты писались. Отвергнуты там же два очевидных пути, и оба по записанным правилам проекта, а не по вкусу: > **положить настоящую запись в `testdata`.** Отвергнуто дважды: `.gitignore` > строкой `*.m4a` её не пустит, а `CLAUDE.md` прямо говорит, что `testdata` в > проекте нет и тесты создают нужное во временном каталоге. Снимать запрет ради > теста — менять правило проекта под удобство одного файла; > > **порождать запись `ffmpeg` прямо в тесте.** Отвергнуто: проверка приёма > начинает требовать установленных `ffmpeg` и `ffprobe`, а критерий приёмки > требует обратного — прогона с `ffprobe`, убранным из `PATH`. Решение попадает в журнал как **намеренный отказ от очевидного подхода**: файл с настоящей записью в `testdata` — первое, что сделал бы человек, и отказ от него из кода не виден. ## Последствия - `+` прогон проверок на чистом клоне зелёный без подготовки файлов руками и без установленных внешних программ. Проверено сборкой тестового бинарника и прогоном под `env -i PATH=<пустой каталог>`. - `+` ветка отказа чтения метаданных впервые проверяема: подставной источник умеет вернуть ошибку, настоящий `ffprobe` по заказу не отказывает. - `+` проверки не держат состояния процесса: каталог хранения задаётся снаружи, `os.Chdir` ушёл, и параллельный прогон перестал быть запрещённым. - `−` разбор вывода настоящего `ffprobe` не проверяется ничем: своего теста у `internal/adapter/metaviewer/ffmpeg` нет. Формально покрытие не потеряно — прежние проверки звали его так, что он всегда отказывал, — но дыра теперь наша и записана в [../review.md](../review.md), «Перестали проверять сознательно». - `−` правило распространяется на будущие проверки: узел, чья работа и есть обращение к внешней программе, придётся проверять иначе, и чем — здесь не решено.