Skip to content

test: podziel osiem plików testowych po lustrze źródeł (faza 5b)#70

Merged
mpasternak merged 1 commit into
mainfrom
cleanup/faza-5b-testy
Jul 24, 2026
Merged

test: podziel osiem plików testowych po lustrze źródeł (faza 5b)#70
mpasternak merged 1 commit into
mainfrom
cleanup/faza-5b-testy

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Ostatni dług rozmiarowy w .py. Osiem plików testowych podzielonych równolegle (osiem agentów), lustrzanie do pakietów źródłowych powstałych w fazach 1–4.

plik przed po testy
test_render.py 3742 11 plików + helper 125 → 125
test_mux.py 1524 9 plików 65 → 65
test_recorder_select.py 1514 8 plików + helper 56 → 56
test_compile.py 1295 6 plików + helper 47 → 47
test_capture.py 1279 4 pliki + helper 40 → 40
test_selects_wiring.py 928 6 plików + helper 32 → 32
test_selects_compile_render.py 741 4 pliki + helper integ
test_popup_compile_render.py 663 2 pliki + helper integ

Zero plików testowych ponad 600 linii. Największy pozostały: 591 (test_source.py, nietknięty, zawsze był pod limitem).

Weryfikacja node-ID, nie liczby

Każdy z ośmiu agentów porównał zbiór identyfikatorów węzłów przed i po — nie samą liczbę, bo para zgubiony+zduplikowany zachowuje licznik. Wszystkie osiem: diff pusty.

Wzorzec fabryki zamiast fixture

Nazwa współdzielonego fixture'u pojawia się też jako parametr testu, więc from ._helpers import page daje F811 na każdej funkcji — a # noqa: F401 tego nie ucisza. Obejście przez alias przechodzi na ruff 0.15 i pada na przypiętym 0.9.2.

Helpery eksportują fabrykę (@asynccontextmanager), każdy plik definiuje własny czterolinijkowy fixture. Zero # noqa w całym podziale, weryfikowane na obu wersjach ruffa.

Zero conftestów — zasada repo zachowana. Markery i skipif przeniesione dosłownie do każdego pliku (nie dziedziczą się przez import helpera); pliki integracyjne niosą komplet integration+ffmpeg+skipif.

capture i selects_wiring dostały bespoke strażniki szwów, bo ich źródła to moduły siostrzane (nie pakiety) — SeamGuard guarduje pakiety.

Wpadka wykryta i naprawiona przez orkiestratora

test_render_optional.py — plik pre-existing, poza zakresem wszystkich agentów — importował FakeTts i TwoSecondTts z usuwanego test_render.py.

Żaden agent nie mógł tego wychwycić w izolacji: importer był w cudzym pliku, którego nie wolno mu było dotykać, a jego własne node-ID i własny suite były zielone. Wykryte dopiero globalnym collect-only na całym drzewie — jedynym miejscem, z którego widać szew między niezależnie wykonanymi zadaniami. TwoSecondTts przeniesiony do _render_helpers (współdzielony przez narration i optional), import przecelowany.

Testy

1529 unit + 51 integration passed, 1 skipped — bez zmian wobec baseline'u.
ruff check (0.15 i 0.9.2) i preview blank-lines — czysto.

Po tym PR jedyny pozostały dług to bramki (Faza 6) i opcjonalny .js (Faza 7).

🤖 Generated with Claude Code

https://claude.ai/code/session_0134rSCftVxsMVL8sngceT7A

Ostatni dług rozmiarowy w .py. Osiem plików testowych podzielonych równolegle,
lustrzanie do pakietów źródłowych powstałych w fazach 1-4.

  test_render.py          3742 → 11 plików + helper   (125 → 125 testów)
  test_mux.py             1524 → 9 plików             (65 → 65)
  test_recorder_select.py 1514 → 8 plików + helper    (56 → 56)
  test_compile.py         1295 → 6 plików + helper    (47 → 47)
  test_capture.py         1279 → 4 pliki + helper     (40 → 40)
  test_selects_wiring.py   928 → 6 plików + helper    (32 → 32)
  test_selects_compile_render.py 741 → 4 pliki + helper (integ)
  test_popup_compile_render.py   663 → 2 pliki + helper (integ)

ZERO plików testowych ponad 600 linii. Największy pozostały: 591
(test_source.py, nietknięty, zawsze był pod limitem).

Każdy agent zweryfikował swój podział porównaniem ZBIORU node-ID przed i po
(nie samej liczby — para zgubiony+zduplikowany zachowuje licznik). Wszystkie
osiem: diff pusty.

WZORZEC FABRYKI ZAMIAST FIXTURE. Nazwa współdzielonego fixture'u pojawia się
też jako parametr testu, więc `from ._helpers import page` daje F811 na każdej
funkcji — a `# noqa: F401` tego nie ucisza. Obejście przez alias przechodzi na
ruff 0.15 i pada na przypiętym 0.9.2. Helpery eksportują FABRYKĘ
(asynccontextmanager), każdy plik definiuje własny czterolinijkowy fixture.
Zero `# noqa` w całym podziale. Weryfikowane na obu wersjach ruffa.

ZERO CONFTESTÓW — zasada repo zachowana. Markery i skipif przeniesione
dosłownie do każdego pliku (nie dziedziczą się przez import helpera);
integracyjne niosą komplet integration+ffmpeg+skipif.

capture i selects_wiring dostały bespoke strażniki szwów, bo ich źródła to
moduły siostrzane (nie pakiety) — SeamGuard guarduje pakiety.

NAPRAWIONE PRZEZ ORKIESTRATORA: test_render_optional.py (plik pre-existing,
poza zakresem agentów) importował FakeTts i TwoSecondTts z usuniętego
test_render.py. Żaden agent nie mógł tego wychwycić w izolacji — importer był
w cudzym pliku. Wykryte globalnym collect-only na całym drzewie. TwoSecondTts
przeniesiony do _render_helpers (współdzielony przez narration i optional),
import przecelowany.

Suite: 1529 unit + 51 integration passed, 1 skipped — bez zmian.
ruff (0.15 i 0.9.2) i preview blank-lines czysto.

Po tym PR: jedyny pozostały dług to bramki (faza 6) i opcjonalny .js (faza 7).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0134rSCftVxsMVL8sngceT7A
@mpasternak
mpasternak merged commit 264b0f9 into main Jul 24, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant