diff --git a/ISSUES.md b/ISSUES.md index 3354525..28a78b0 100644 --- a/ISSUES.md +++ b/ISSUES.md @@ -1,14 +1,5 @@ # ISSUES — Задачи и баг-трекер -## Низкий приоритет - -- [ ] **`conftest.py` и `bot.py` дублируют monkey-patch** — идентичный `asyncio.iscoroutinefunction = ...` в двух файлах. Вынести в `compat.py` -- [ ] **`RateLimiter` тесты зависят от реального времени** — `time.monotonic()` в `_refill` делает тесты потенциально flaky на медленном CI. Добавить `time.monotonic` mock -- [ ] **`Dockerfile` не копирует `conftest.py`** — `COPY` пропускает `conftest.py`. Тесты в контейнере упадут без monkey-patch -- [ ] **`requirements.txt` без пиннинга версий** — `>=` допускает мажорные обновления. Для production использовать `==` или `~=` -- [ ] **Закомментированный тест `pressure_to_mmhg(0)` вводит в заблуждение** — `(0, "\u2014"), # 0 — falsy, возвращается '\u2014' (баг)` закомментирован, но `test_pressure_zero` проходит. Удалить закомментированную строку (`tests/test_pogoda.py`) -- [ ] **`format_articles(None)` бросает `TypeError`** — нет валидации `articles` на `None`. Вызывает краш вместо graceful fallback (`utils/news.py`) - --- ## Исправлено @@ -42,3 +33,9 @@ - [x] **`TextHelpCommand` пропускает команды без cog** — standalone-команды показываются если не hidden (`bot.py`) - [x] **`translate_weather(" ")` возвращает пробелы** — добавлен `.strip()` перед проверкой (`utils/pogoda.py`) - [x] **`pressure_to_mmhg(mb: Any)`** — заменён на `float | int | str | None` (`utils/pogoda.py`) +- [x] **`conftest.py` и `bot.py` дублируют monkey-patch** — вынесен в `utils/compat.py`, оба файла импортируют оттуда +- [x] **`RateLimiter` тесты зависят от реального времени** — добавлен `_time_func` параметр, все тесты используют контролируемую функцию времени +- [x] **`Dockerfile` не копирует `conftest.py`** — добавлен `COPY conftest.py .` +- [x] **`requirements.txt` без пиннинга версий** — `>=` заменён на `~=` (compatible release) +- [x] **Закомментированный тест `pressure_to_mmhg(0)`** — удалена устаревшая закомментированная строка +- [x] **`format_articles(None)` бросает `TypeError`** — добавлена валидация `None`, graceful fallback с сообщением