chore(PLAN60): CI で tests/ の pytest を実行する (#141) - #202
Conversation
- uv.lock から uv sync --frozen で依存を入れ、Python 3.10 / 3.13 で pytest tests/ を回す Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- entrypoint の gcloud 不在: /usr/bin を並べず bash だけを置いた PATH を作る (runner は /usr/bin/gcloud を持つ) - tmux の terminal-overrides: 既定を固定値でなく空の設定を読ませた同じ tmux から取る - cache の消せない控え: os.unlink でなく Path.unlink を差し替える (3.10 の pathlib は束縛済み) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | kiro | APPROVE
CI で pytest を走らせる変更として妥当です。テスト側の移植(gcloud を除いた PATH の隔離、tmux 既定値をバージョン非依存に比較、Python 3.10 向けの Path.unlink monkeypatch)はいずれも根拠が明確で、CI/ローカル差分を正しく吸収しています。openbao fixture はプロセス内 FakeOpenBao で docker/network 不要のため tests/env/test_cache.py の変更も CI 安全です。ブロッカーはありません。CI ジョブのタイムアウトについて minor を 1 件インラインに残しました。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | agy | REQUEST_CHANGES
CI の pytest ジョブ(Python 3.10 / 3.13)で tests/containers/test_tmux_conf.py が失敗しているため修正をお願いします。インラインコメントに修正アクションを記載しています。
Ubuntu の tmux は値の無い terminal-overrides 行を出し、_parse_options が 空文字を既定として積むため、追記後の値と一致しなかった。比べる前に空文字を除く。 あわせて pytest ジョブに timeout-minutes: 15 を付ける。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
🔧 /ndf:fix サマリ対応件数: critical=1 / major=0 / minor=1 (合計 2 件) 詳細
検証: |
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | codex | REQUEST_CHANGES
仕様適合: PLAN60 の前提 2 を満たすため、依存定義と lock の不整合を CI で検出してください。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | kiro | APPROVE
light モードの CI 追加として範囲は一貫しており、テスト側の修正(Python 3.10 の pathlib が os.unlink をクラス定義時に束縛する差異 → Path.unlink を差し替え、GH runner の /usr/bin/gcloud 回避、tmux 既定値の版差を空設定との比較で吸収)はいずれも根拠が明確で正確です。docker/openbao/network 依存テストは fake/stub で隔離されており CI 用のマーカー除外は不要。修正を要する箇所は見つかりませんでした。
…いで落ちるようにする (#141) --frozen は lock と pyproject.toml の整合を検査しない。PLAN60 前提 2 を満たすため --locked に変え、 続く uv run も揃えて --locked にする。PLAN60 の記述も合わせる。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
🔧 /ndf:fix サマリ対応件数: critical=0 / major=1 / minor=0 (合計 1 件) 詳細
|
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 3 | codex | APPROVE
修正が必要な指摘はありません。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 4 | kiro | APPROVE
CI 導入 (light) として範囲・意図が一貫。uv sync --locked / uv run --locked は PLAN60 の受け入れ条件 2 と整合し、lock ドリフトも CI で検知できる。テスト側の修正 (Ubuntu runner に /usr/bin/gcloud があるための no_gcloud_path、tmux 既定値を版依存にしない比較、Python 3.10 で os.unlink 差し替えが届かないための Path.unlink 差し替え) はいずれも CI 移植性のための妥当な変更で、実装詳細ではなく仕様・失敗系を検証している。修正を要する指摘は無し。
検証結果(quality-gates / light)
受け入れ条件(issues/PLAN60_ci-pytest.md):
未検証の項目: なし |
Summary
.github/workflows/ci.ymlにpytestジョブを足す。uv sync --frozenでuv.lockから依存を入れ、Python 3.10(requires-pythonの下限)と 3.13(手元の uv が選ぶ版)でtests/全体を回すissues/PLAN60_ci-pytest.md(モードlight。本番コードは変えない)Closes #141
Test plan
DEVBASE_ROOT無し・HOME を空の tmp)でenv -u DEVBASE_ROOT uv run --frozen pytest -q tests/→2682 passed、exit=0(本 PR の変更前の main、macOS)pytestジョブ(3.10 / 3.13)が成功する(受け入れ条件 3)pytestジョブが失敗する(受け入れ条件 4。確かめた後に戻す)🤖 Generated with Claude Code