diff --git a/.forgejo/workflows/deploy-tradein.yml b/.forgejo/workflows/deploy-tradein.yml index 102dfde0..b93af07c 100644 --- a/.forgejo/workflows/deploy-tradein.yml +++ b/.forgejo/workflows/deploy-tradein.yml @@ -164,15 +164,25 @@ jobs: run: uv sync --frozen - name: Run pytest (tradein-mvp/backend) - # DESELECT (актуализировано 2026-07-02, #2208): test_search_cache_hit падает - # ТОЛЬКО в whole-suite ordering (401 vs 200; в изоляции проходит) — global-state - # leak из другого test-модуля, pre-existing. Второй исторический deselect - # (test_cian_valuation::test_cache_hit_returns_cached) убран — проходит в полном - # прогоне (проверено 2026-07-02: 2947 passed / 1 failed). Список обязан - # совпадать с backend-tests в ci-tradein.yml (pre-merge гейт). - run: | - uv run pytest -q \ - --deselect "tests/test_search_api.py::test_search_cache_hit" + # БЕЗ deselect'ов — сьют гоняется целиком, как в ci-tradein.yml. + # + # Здесь жил `--deselect tests/test_search_api.py::test_search_cache_hit` с + # объяснением «падает ТОЛЬКО в whole-suite ordering, в изоляции проходит — + # global-state leak из другого модуля». Объяснение было неверным в обеих + # половинах: тест падал и в изоляции тоже (401 vs 200), потому что ходил в + # /api/v1/search БЕЗ заголовка X-Authenticated-User, а RBAC-гард отвечает на + # такое 401. Причина была в самом тесте; заголовок добавлен в #2729, и в + # pre-merge гейте deselect снят тогда же. Здесь строка пережила починку ещё + # на месяц — файл был занят открытым #2680. Тот смержен, долг закрыт. + # + # Не добавлять сюда новые deselect'ы: молча выключенный тест — тот же класс + # дефекта, что каталог вне пайплайна (#2722). Тест либо чинится, либо + # помечается xfail с причиной В КОДЕ, рядом с самим тестом. + # + # `-rs`: каждый пропуск печатает причину (#2745). Ожидание в этом лэйне — + # 13 пропусков, все объявлены в tests/skip_allowlist.txt; неучтённый + # пропуск роняет прогон через хук в tests/conftest.py. + run: uv run pytest -q -rs build-backend: runs-on: ubuntu-latest