docs(task): add findings that only surface with UI dependencies installed
Running the suite with customtkinter present exposes four failures the headless run never reaches: hermes_hub_app mutates sys.path so tests load the stale installed plugin copy, and two OAuth lifecycle tests fail outright. conftest's name-based skip hid both. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
a7027b42d5
commit
8143150ebc
1 changed files with 33 additions and 0 deletions
|
|
@ -112,6 +112,39 @@ tests/test_ui_*.py
|
|||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## P0-bis. Найдено при прогоне с установленными UI-зависимостями
|
||||
|
||||
Обнаружено 2026-08-21 при проверке PHASE 1 Codex. Эти дефекты **не видны в обычном прогоне**: без `customtkinter` соответствующие тесты пропускаются, поэтому suite зелёный, а код не исполняется.
|
||||
|
||||
### 1. Подмена `sys.path` заставляет тесты грузить УСТАНОВЛЕННУЮ копию плагина
|
||||
|
||||
`hermes_hub_app.py:41` при импорте делает `sys.path.insert(0, ...)` для `%LOCALAPPDATA%\hermes\pluginsntigravity-provider\src`. Как только любой тест импортирует этот модуль, путь установленной копии оказывается **впереди** репозитория, и последующие импорты `antigravity_provider.*` резолвятся в развёрнутую — то есть более старую — версию.
|
||||
|
||||
Проявление: `tests/test_p0_release_gate.py::test_p0_5_b1_non_router_error_fallback` и `::test_n2_error_formatter_deduplication` падают с `ImportError: format_antigravity_error` **только в полном прогоне**, а по отдельности проходят. Проверено: функция есть в `src/antigravity_provider/runtime.py` и отсутствует в установленной копии.
|
||||
|
||||
Последствия шире тестов: в проде приложение может исполнять развёрнутый плагин вместо ожидаемого кода, а после обновления — смесь версий. Пакет `antigravity_provider` — namespace-типа (нет `__init__.py`), поэтому его `__path__` спокойно объединяет оба каталога.
|
||||
|
||||
**Нужно:** определить единственный источник импорта. Либо приложение не трогает `sys.path` и полагается на установленный пакет, либо repo-режим явно вытесняет установленный. Смешанное состояние недопустимо. Добавить тест, фиксирующий, из какого каталога загружен `antigravity_provider`.
|
||||
|
||||
### 2. `test_oauth_lifecycle.py` — два теста падают при реальном исполнении
|
||||
|
||||
```
|
||||
FAILED test_e_repeated_open_browser_invariance
|
||||
FAILED test_f_copy_before_open_browser
|
||||
assert wizard.oauth_url is not None
|
||||
E assert None is not None
|
||||
```
|
||||
|
||||
Падают и по отдельности, и в полном прогоне — от порядка не зависят. То есть заявленная в `249a888` «immediate URL readiness» этими тестами не подтверждена. Разобраться: дефект в продукте или в тесте (например, мок `start_profile_oauth` не покрывает путь `_init_antigravity_oauth`). Пока не выяснено — считать функцию непроверенной.
|
||||
|
||||
### 3. Заглушка в `conftest.py` слишком широкая
|
||||
|
||||
`pytest_collection_modifyitems` пропускает тест, если в его имени встречается `ui`, `view` или `wizard`. Под это попадают и статические проверки, которым GUI не нужен, — из-за чего оба дефекта выше жили незамеченными. Заменить на явную маркировку (`@pytest.mark.gui`) либо на проверку реального импорта GUI-модулей.
|
||||
|
||||
**Критерий приёмки:** полный `pytest` зелёный **и** в окружении без UI-зависимостей, **и** в окружении с установленными `customtkinter`/`pillow`/`psutil`. Сейчас второй вариант даёт 4 падения.
|
||||
|
||||
## Критерии приёмки
|
||||
|
||||
1. `docs/UI_STATE_CONTRACT.md` опубликован до остальных изменений, содержит раздел «Backend gaps» и для каждого поля — признак реальности данных.
|
||||
|
|
|
|||
Loading…
Reference in a new issue