Skip to content

#2291 を実装する(スプリント l20261031-5) - #2311

Merged
takemi-ohama merged 14 commits into
sprint/l20261031-5from
feat/issue-2291-l20261031-5
Oct 31, 2026
Merged

takemi-ohama merged 14 commits into
sprint/l20261031-5from
feat/issue-2291-l20261031-5

Conversation

@takemi-ohama

Copy link
Copy Markdown
Contributor

pytest の実行が止められたときや終わったときに、テストが起こした子孫のプロセスを止めるようにしました。あわせて、各テストの分岐をプロセスの中で確かめる形へ移し、固定の待ちを縮めて、全体テストを速くしました。Python tests の CI の実行を整え、テストを削る基準と速くする手段を開発ガイドへ書きました(#2291 スプリント l20261031-5 のブランチへ集める作業、#2204、#2154)。

利用者向けの変化

  • 無し

移行の手順

  • 無し

変更の要点

テスト

supervise.py の run のステップの結果です。

ステップ exit 結果
base-sync 0 ベースブランチ sprint/l20261031-5 を取り込んだ
format 0 整形 1 本が通った(変わったファイルは無い)
sync 0 同期とチェック 5 本が通った
lint-limited 0 範囲テスト 2 本(8.7 秒)
test-limited 0 範囲テスト 1 本(594.6 秒)
design-tests 1 stopped。設計文書 issues/issue-2291-design.md に名前の出るテストのうち、3 件が HEAD に見当たらない
design-specs 0 変えたパス 31・シンボル 99 を含む既存の確定仕様と変更履歴 89 件を照合

design-tests は止まっています。設計文書に書いたテストの名前と HEAD のテストが 3 件食い違っているので、確認が要ります。

設計と違う点

設計の箇所 違い 理由
決定 1(issues/issue-2291-design.md の 224 行目。pytest の各テストの所要の合計を約 460 秒へ減らす)・受け入れ条件 1 届いていない。着手後の壁時計は 635.8 秒(pytest 607.5 秒)、各テストの所要の合計は 2,273.8 秒(着手前 3,454.6 秒)。「0.3 秒以上のテストは合計 120 秒まで」の目安にも届いていない(issues/issue-2291-test-ledger.md の「着手前後の実測」) 決定 3 の 3 つの手段だけでは、本物のスクリプトと子のプロセスを起こして待つ結合テスト(中継・supervise の queue と再開・cross-review と cross-refactoring の drive)の秒が残る。決定 3 と未決 1 に従い、届いた値と差(約 1,700 秒)を PR に書いて人へ戻す。次の候補は決定 3 が挙げる起動の短縮(テストの対象のコードの変更で、この課題の範囲の外)
実装の順序の E8(issues/issue-2291-design.md の 140 行目。着手後を 3 回測る)・受け入れ条件 1 着手後の計測は 1 回(ほかに途中の計測が 1 回)で、3 回は測っていない 1 回目で 180 秒に届かないと分かり、届かない側の分岐(届いた値と差を PR に書いて人へ戻す)へ進んだため
非機能の実現方式の「打ち切ったテストのプロセスが残らない」の確かめ方(issues/issue-2291-design.md の 218 行目)・受け入れ条件 6 test-run.py whole --limit 30 では確かめず、同じ打ち切る側の test_triage.run_command に宣言の pytest のコマンドを上限 30 秒で渡して確かめた(10 秒後 0 件) PR の無いこのブランチでは test-run.py whole が CI のチェックの結論を待つ側へ進み、手元のテストを流さなかった(台帳の「打ち切りの確かめ」)。PR を作った後に test-run.py whole で確かめ直すかは人が決める
決定 5・決定 6・テスト設計の受け入れ条件 8・9(issues/issue-2291-design.md の 258・264・286〜288 行目) 判断できない。concurrency の取り消し・push の 2 回が最後まで回ること・CI の 180 秒・取り消した run の conclusion は確かめていない ワークフローの変更は入れたが、実装の PR の run がまだ無い。PR を作った後の run で確かめる(設計の「未確認のまま残ること」の「取り消した実行の結論」「CI の 180 秒」)
決定 2(issues/issue-2291-design.md の 234 行目)が名前を出す scripts/tests/test_check_script_structure.py::test_repository_matches_its_allow_list 作らなかった(HEAD に無い) 決定 2 の基準 6 で消す対象として名前が出ている。消して台帳に基準 6 と守る検査(suite script-structure と .github/workflows/script-structure.yml)を書いた。設計どおり
決定 4(issues/issue-2291-design.md の 250・252 行目)が名前を出す test_triage.run_command・test_lib_test_triage.py::test_a_timed_out_shell_command_takes_its_children_down 作らなかった どちらも既にある。前者はテストでなく plugins/ndf/scripts/lib/test_triage.py の関数、後者は plugins/ndf/scripts/tests/test_lib_test_triage.py の 22 行目にある既存のテスト(照合の道具がパスを根から探して見つけられなかった)

モード: standard / 通した工程: 実装 → 完了判定 → Pull Request

🤖 Generated with Claude Code

takemi-ohama and others added 14 commits October 31, 2026 14:39
根の conftest が scripts/pytest_child_cleanup.py を読み込み、親と xdist の各 worker を子の回収役にする。
自分の session で起こした子と、親が先に終わった孫も SIGTERM と終了の時点で止め、付け替わった孫のゾンビは
SIGCHLD で回収する。止める処理は lib/procs.py の child_pids と stop_tree を使う。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
起動の配線は各スクリプトの代表の起動(supervise の run、phase-steps の転送、glossary の各副命令)に残す。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@takemi-ohama
takemi-ohama marked this pull request as ready for review October 31, 2026 17:28
@takemi-ohama
takemi-ohama merged commit 50040c4 into sprint/l20261031-5 Oct 31, 2026
25 checks passed
@takemi-ohama
takemi-ohama deleted the feat/issue-2291-l20261031-5 branch October 31, 2026 17:29
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