yt-dlp-gui/.coverage
codex-pve d0c36875d3 Тесты на поток прогресса и на заявленные гарантии приватности
Аудит показал, что набор тестов даёт ложную уверенность: из 55 внесённых
в код поломок он замечал 14. Хуже всего было то, что непокрытыми
оказались ровно те свойства, которые сервис обещает пользователю на
своих же страницах.

Поток прогресса не проверялся вовсе, хотя именно он удерживает поток
gunicorn на всё время загрузки. Добавлены проверки: заголовки, гасящие
буферизацию nginx; завершение на терминальном статусе, включая served;
отсутствие повторов одинаковых данных; периодический признак жизни, без
которого обрыв клиента не обнаруживался и поток жил до самого дедлайна;
сам дедлайн.

Гарантии приватности закрыты тестами по пунктам: логгер yt-dlp не
печатает ничего (иначе ссылки снова осядут в journald), в журнал идёт
только домен, из текста ошибки вымарываются локальные пути и внутренние
адреса, но ссылка пользователя остаётся целой, в публичную ленту
попадает приведённая ссылка без токенов, метки времени огрублены до
минуты и огрубляются у уже накопленных записей, рубильник ленты выключает
и журнал времён, внутренние метрики отдаются только с локального адреса,
сроки хранения работают и отключаются, разовые миграции выполняются один
раз и переживают сбой канонизации.

Проверено мутациями: семь поломок, которые прежний набор пропускал
(логгер снова печатает ссылки, округление снято, в ленту идёт сырая
ссылка, метрики наружу, поток без признака жизни, поток без дедлайна,
события не чистятся), теперь роняют тесты.

Всего 293 теста, покрытие 79%.

Claude-Session: https://claude.ai/code/session_01AwY2Cg54RK7WZdvMaLV5Di
2026-09-24 17:11:37 +03:00

52 KiB