From 978461e96aca43dd744e1508c33949734ab7f7cd Mon Sep 17 00:00:00 2001 From: bot-backend Date: Fri, 7 Aug 2026 01:51:46 +0500 Subject: [PATCH] =?UTF-8?q?ci(tradein):=20=D1=81=D0=BD=D1=8F=D1=82=D1=8C?= =?UTF-8?q?=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD=D0=B8=D0=B9=20des?= =?UTF-8?q?elect=20=E2=80=94=20=D0=BE=D0=BD=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B6=D0=B8=D0=BB=20=D0=BF=D0=BE=D1=87=D0=B8=D0=BD=D0=BA=D1=83?= =?UTF-8?q?=20=D1=81=D0=B2=D0=BE=D0=B5=D0=B3=D0=BE=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `--deselect tests/test_search_api.py::test_search_cache_hit` в post-merge test-job'е остался единственным deselect'ом в репозитории. Его объяснение («падает только при полном прогоне, в изоляции проходит — global-state leak») было неверным в обеих половинах: тест падал и в изоляции, потому что ходил в /api/v1/search без X-Authenticated-User, а RBAC-гард отвечает 401. Причина была в тесте; заголовок добавлен в #2729, и в pre-merge гейте строка снята тогда же. Здесь она пережила починку ещё на месяц — файл был занят открытым #2680. Тот смержен, долг закрыт. Заодно `-rs`, как в остальных лэйнах: пропуск печатает причину. Ожидание в этом лэйне — 13 объявленных пропусков; неучтённый роняет прогон через хук бюджета (#2745). После этого коммита в репозитории не остаётся ни одного `--deselect`. --- .forgejo/workflows/deploy-tradein.yml | 28 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) 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 -- 2.45.3