[Tests] Пробелы в тестовом покрытии: дедупликация datetime, dynamic-режим, моки не соответствуют сигнатуре, нет конфигурации pytest #67
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проблема
Аудит выявил пробелы в тестах (все 277 текущих тестов зелёные, но ряд путей не проверен).
1. Моки в test_cli.py не соответствуют реальной сигнатуре (
tests/test_cli.py:94, а также строки 106, 131, 201, 213, 523, 548):fetch_issues_with_spent_time()возвращает кортежи из 3 элементов(Issue, hours, activities). Тесты проходят только потому, чтоreport_builder.py:56-57терпимо распаковываетfor issue, hours, *rest in .... Моки вводят в заблуждение и не проверяют путь сactivities.2. Нет прямых тестов краевых случаев дедупликации: сравнение naive
created_on(именно так их отдаёт redminelib) с aware cutoff; roundtrip--commit→_compute_dedup_cutoffв часовом поясе ≠ UTC. См. связанный баг про краш дедупликации.3. Нет теста связки
dynamic: true+precision: datetimeбез--date— см. связанный баг:parse_date_rangeотвергает datetime-строки изcompute_next_period.4. Нет регрессионного теста полной загрузки time entries при >100 записях. Текущая реализация полагается на авто-пагинацию redminelib (
bulk_requestдогружает страницы чанками по 100 доtotal_count). Поведение корректное, но не зафиксировано тестом: смена способа выборки (например, передача явногоlimit) может тихо ввести потерю данных.5. Консольные форматтеры проверяются только smoke-тестами (непустота, вхождение подстрок), без структурных проверок/снапшотов;
XLSXFormatterне тестирует режимby_activity.6. Отсутствует конфигурация pytest: в
pyproject.tomlнет[tool.pytest.ini_options], нетpytest.ini/conftest.py— из свежего клонаpytestне находит пакет без установки илиPYTHONPATH=..Рекомендации
activities.--date.bulk_request— подтвердить, что все записи попадают в отчёт.TableFormatter/CompactFormatter;by_activityдляXLSXFormatter.pyproject.toml:Связанные места
tests/test_cli.py:94и др.redmine_reporter/report_builder.py:56-57pyproject.tomlКритерии приёмки
pytestработает из свежего клона без дополнительных переменных окружения.