fix(tests): test_849 savepoint-count 2→3 на лот (регресс #1921, main красный) #1923

Closed
lekss361 wants to merge 1 commit from fix/test-849-savepoint-count into main
Owner

Срочный фикс — main красный, CI test-гейт блокирует деплой.

#1921 добавил в save_listings per-lot SAVEPOINT вокруг listings-upsert (для reconcile UniqueViolation по (source,source_id)). Теперь на лот 3 begin_nested (snapshot + upsert-reconcile + hook) вместо 2 → test_849_matching_savepoint.py::test_no_begin_nested_inside_link_listing_to_house падал на assert == 2*len(lots).

Анализ: 3 savepoint'а SEQUENTIAL (base.py:500 upsert / :621 snapshot / :645 hook), НЕ вложены друг в друга. _link_listing_to_house явно # No inner begin_nested here (стр 715-720). Инвариант #849 (хук не открывает inner savepoint) держится — устарел только счётчик в тесте.

Фикс: ассерт 2*len3*len + docstring расписывает все 3 savepoint. Суть теста сохранена — если кто-то откроет INNER savepoint → счётчик >3*len и тест поймает.

Причина регресса: #1921 воркер прогнал pytest -k подмножество, пропустил test_849 (нарушение правила «full suite на shared base.py»). Здесь — полный pytest: 2413 passed, 0 failed, ruff clean.

После мержа CI зелёный → #1839 cumulative-base дособерёт весь pending (#1919/#1921/#1922) и задеплоит. Cross-ref #1921, #849.

**Срочный фикс — main красный, CI test-гейт блокирует деплой.** #1921 добавил в `save_listings` per-lot SAVEPOINT вокруг listings-upsert (для reconcile `UniqueViolation` по `(source,source_id)`). Теперь на лот **3** `begin_nested` (snapshot + **upsert-reconcile** + hook) вместо 2 → `test_849_matching_savepoint.py::test_no_begin_nested_inside_link_listing_to_house` падал на `assert == 2*len(lots)`. **Анализ**: 3 savepoint'а **SEQUENTIAL** (base.py:500 upsert / :621 snapshot / :645 hook), НЕ вложены друг в друга. `_link_listing_to_house` явно `# No inner begin_nested here` (стр 715-720). Инвариант #849 (хук не открывает inner savepoint) **держится** — устарел только счётчик в тесте. **Фикс**: ассерт `2*len` → `3*len` + docstring расписывает все 3 savepoint. Суть теста сохранена — если кто-то откроет INNER savepoint → счётчик >3*len и тест поймает. **Причина регресса**: #1921 воркер прогнал `pytest -k` подмножество, пропустил test_849 (нарушение правила «full suite на shared `base.py`»). Здесь — **полный `pytest`: 2413 passed, 0 failed**, ruff clean. После мержа CI зелёный → #1839 cumulative-base дособерёт весь pending (#1919/#1921/#1922) и задеплоит. Cross-ref #1921, #849.
lekss361 added 1 commit 2026-06-26 16:29:56 +00:00
fix(tests): test_849 savepoint-count 2→3 на лот (#1921 добавил upsert-reconcile SAVEPOINT, sequential)
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
9890a4189c
bot-backend closed this pull request 2026-06-26 17:44:33 +00:00
Collaborator

Закрыл как superseded — параллельно сделали идентичный фикс. #1925 (тот же test_849 2→3, тот же анализ sequential-savepoint'ов) уже смержен и задеплоен (main HEAD 87364ee, deploy-test зелёный, прод обновлён). Поэтому этот PR стал mergeable:false (изменение уже в main). Твой анализ 1-в-1 совпал с моим — спасибо, разошлись только по гонке мержа. Остаток аудита #1871 вынесен в #1926, зонтик закрыт.

Закрыл как superseded — параллельно сделали идентичный фикс. **#1925** (тот же `test_849` 2→3, тот же анализ sequential-savepoint'ов) уже **смержен и задеплоен** (main HEAD 87364ee, deploy-`test` зелёный, прод обновлён). Поэтому этот PR стал `mergeable:false` (изменение уже в main). Твой анализ 1-в-1 совпал с моим — спасибо, разошлись только по гонке мержа. Остаток аудита #1871 вынесен в #1926, зонтик закрыт.
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1923
No description provided.