03a0e36738
Recorded in tests/artifacts/PHASE14_PARENT_VERIFICATION.log.
Issue 2 (test_live_gui_workspace_exists xdist race) is confirmed as a
pre-existing race condition on the parent commit. The test PASSED in
2.84s when run in isolation on 4ab7c732. The race only manifests in
batched parallel runs where the owner worker's teardown removes the
shared workspace path before a client worker's test asserts it exists.
This is NOT a regression from Phase 12 (or any subsequent Result[T]
migration work). The fix (live_gui_workspace fixture recreates the
workspace if missing) will be applied in Phase 2.2.
77 lines
2.9 KiB
Plaintext
77 lines
2.9 KiB
Plaintext
# Phase 14 - Parent Commit Verification
|
|
|
|
**Track:** live_gui_test_fixes_20260618
|
|
**Date:** 2026-06-18
|
|
**Investigator:** Tier 2 Tech Lead (autonomous run)
|
|
|
|
## Conclusion
|
|
|
|
Issue 2 (`test_live_gui_workspace_exists` xdist race) is confirmed as a
|
|
**pre-existing race condition** on the parent commit `4ab7c732`. It is
|
|
NOT a regression introduced by Phase 12 (or any subsequent Result[T]
|
|
migration work).
|
|
|
|
## Test Run on Parent Commit 4ab7c732 (in isolation)
|
|
|
|
```
|
|
uv run pytest tests/test_live_gui_workspace_fixture.py::test_live_gui_workspace_exists -v --timeout=120
|
|
```
|
|
|
|
Result: **PASSED in 2.84s**
|
|
|
|
This confirms the spec's claim. The xdist race only manifests in batched
|
|
parallel runs (where multiple workers share the workspace path and the
|
|
owner's teardown can race with a client's test execution).
|
|
|
|
## The xdist race
|
|
|
|
The `live_gui_workspace` fixture returns `live_gui.workspace` (a single
|
|
shared path `_RUN_WORKSPACE = Path(f"tests/artifacts/live_gui_workspace_{_RUN_ID}")`).
|
|
The owner worker's `live_gui` fixture teardown runs `shutil.rmtree(temp_workspace)`
|
|
when the owner worker's session ends. In xdist mode, this can happen
|
|
before client workers have completed their tests, leaving the workspace
|
|
missing when client tests assert `live_gui_workspace.exists()`.
|
|
|
|
## The fix
|
|
|
|
The `live_gui_workspace` fixture must ensure the workspace exists by
|
|
calling `mkdir(parents=True, exist_ok=True)` on the path before returning
|
|
it. This makes the fixture resilient to concurrent teardown by other
|
|
workers.
|
|
|
|
---
|
|
|
|
## Raw test output
|
|
|
|
```
|
|
============================= test session starts =============================
|
|
platform win32 -- Python 3.11.6, pytest-9.1.0, pluggy-1.6.0 -- C:\projects\manual_slop_tier2\.venv\Scripts\python.exe
|
|
cachedir: .pytest_cache
|
|
rootdir: C:\projects\manual_slop_tier2
|
|
configfile: pyproject.toml
|
|
plugins: anyio-4.14.0, asyncio-4.0.0, cov-7.1.0, timeout-2.4.0, xdist-3.8.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 120.0s
|
|
timeout method: thread
|
|
timeout func_only: False
|
|
collecting ... collected 1 item
|
|
|
|
tests/test_live_gui_workspace_fixture.py::test_live_gui_workspace_exists PASSED [100%]
|
|
|
|
============================== warnings summary ===============================
|
|
src\gui_2.py:2191
|
|
C:\projects\manual_slop_tier2\src\gui_2.py:2191: DeprecationWarning: invalid escape sequence '\p'
|
|
"""Renders the project configuration panel. Allows setting execution mode,
|
|
|
|
src\gui_2.py:2297
|
|
C:\projects\manual_slop_tier2\src\gui_2.py:2297: DeprecationWarning: invalid escape sequence '\p'
|
|
"""Renders the System Path Configuration panel. Shows source-tagged logs and scripts
|
|
|
|
src\gui_2.py:5964
|
|
C:\projects\manual_slop_tier2\src\gui_2.py:5964: DeprecationWarning: invalid escape sequence '\p'
|
|
"""
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
======================== 1 passed, 3 warnings in 2.84s ========================
|
|
```
|