From db3b58ee3eb25891ba0d49d9fa5128b0a181d3a8 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Mon, 24 Aug 2026 01:07:26 +0300 Subject: [PATCH] =?UTF-8?q?fix(tests):=20=D0=BE=D0=B1=D1=8A=D1=8F=D0=B2?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D0=B4=D0=B2=D0=B0=20=D0=B6=D0=B8=D0=B2?= =?UTF-8?q?=D1=8B=D1=85=20=D1=82=D0=B5=D1=81=D1=82=D0=B0=20#3063=20=D0=B2?= =?UTF-8?q?=20skip=5Fallowlist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Main красный: `Deploy Trade-In / test` падает, хотя pytest прошёл (4732 passed, 34 skipped). Валит его гард из tests/conftest.py: НЕУЧТЁННЫЙ ПРОПУСК (2): проверка не исполнилась и не объявлена в skip_allowlist.txt Гард сработал ровно как задуман — «пропуск без записи неотличим от пройденной проверки» (#2722/#2729/#2740). Два поведенческих теста из #3067 требуют живую Postgres: в ci-tradein.yml есть postgres-сервис и они реально исполняются (там PR и был зелёным), а в deploy-tradein.yml БД нет вовсе — отсюда зелёный PR и красный main. Из-за этого три скрапперных правки (#3065, #3067, #3068) собрались, но НЕ выкатились — деплой встал на тест-гейте. Запись объясняет, почему проверку нельзя выполнить в deploy-лэйне и где она выполняется вместо этого, как требует шапка файла. Статическая половина того же файла (гард COALESCE + гард паритета кортежей) БД не требует и идёт на обоих лэйнах — то есть без записи остаётся не дыра, а только поведенческая проверка. Проверено локально фальсификацией: со старым allowlist гард печатает «НЕУЧТЁННЫЙ ПРОПУСК (2)», с новым молчит; тесты в обоих случаях 7 passed, 2 skipped. Refs #3063, #3067 --- tradein-mvp/backend/tests/skip_allowlist.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tradein-mvp/backend/tests/skip_allowlist.txt b/tradein-mvp/backend/tests/skip_allowlist.txt index 1f16e356..aef1335e 100644 --- a/tradein-mvp/backend/tests/skip_allowlist.txt +++ b/tradein-mvp/backend/tests/skip_allowlist.txt @@ -118,3 +118,14 @@ tests/test_3036_detail_house_params_to_houses.py::test_live_fill_only_then_keep_ tests/test_revisit_floor_lateral_lookup.py::test_lateral_ignores_gaps_and_matches_dense_daily_history tests/test_revisit_floor_lateral_lookup.py::test_equality_join_loses_gapped_pairs_and_gives_a_smaller_floor tests/test_revisit_floor_lateral_lookup.py::test_missing_history_before_anchor_still_yields_no_floor_via_lateral + +# Эрозия признаков продавца (#3063, PR #3067) — тот же `_live_session()`. +# Проверяют ПОВЕДЕНИЕ апсерта на живой схеме: что бедный re-scrape не обнуляет +# is_homeowner/is_pro_seller/phones/sale_type (COALESCE держит), и обратное — что +# настоящая смена признака всё ещё перезаписывает (COALESCE не сделал поля +# write-once). SQL-текст проверяется отдельно статической половиной того же файла +# (test_field_is_coalesce_protected_in_set + test_unchanged_gate_mirrors_the_set_clause), +# она идёт на ОБОИХ лэйнах. В ci-tradein.yml эти два бегут по-настоящему +# (postgres-сервис) — там прогон и был зелёным; в deploy-tradein.yml БД нет вовсе. +tests/test_3063_seller_fields_not_eroded.py::test_poor_rescrape_does_not_erase_seller_fields +tests/test_3063_seller_fields_not_eroded.py::test_real_change_still_overwrites