Skip to content

#455 を実装する(スプリント m8a) - #460

Merged
takemi-ohama merged 3 commits into
sprint/m8afrom
feat/issue-455-m8a
Oct 12, 2026
Merged

takemi-ohama merged 3 commits into
sprint/m8afrom
feat/issue-455-m8a

Conversation

@takemi-ohama

Copy link
Copy Markdown
Contributor

zsh を実際に起動して、補完が出す候補を期待どおりか比べるテストを追加しました(#455)。CI の pytest ジョブに zsh を入れ、このテストを必須にしています。確定仕様と開発参加ガイドにも、このテストのことを書き加えました。

利用者向けの変化

  • 無し

移行の手順

  • 無し

変更の要点

  • テスト
    • tests/cli/zsh_completion_harness.py を追加しました。zsh を起動して補完の候補を取り出す道具です。
    • tests/cli/test_zsh_completion_run.py を追加しました。この道具を使って、補完の実際の候補を比べます。
    • あわせて tests/cli/test_completion.py を少し直しました。
  • CI
    • .github/workflows/ci.yml の pytest ジョブで zsh を入れるようにしました。
    • zsh の補完の実行テストを必須にしました。
    • この決まりを tests/ci/test_ci_workflow.py で確かめるようにしました。
  • 文書
    • 確定仕様の docs/specifications/cli-argument-resolution.md と docs/specifications/ci-checks.md に、zsh の補完の実行テストを書きました。
    • 開発参加ガイドの docs/developer/contributing.md にも同じことを書きました。
  • 変更の規模
    • 8 ファイル、617 行の追加と 11 行の削除です。

テスト

ステップ 結果
test-limited ok:範囲テスト 1 本(126.3 秒、戦略 local-full)
design-tests ok:設計文書 1 件(issues/issue-455-design.md)。設計に名前の出るテスト 8 件はすべて HEAD にある
design-specs ok:変えたパス 8・シンボル 53 を含む既存の確定仕様と変更履歴 15 件

設計と違う点

設計の箇所 違い 理由
処理の流れ「時間切れのとき、…外側の zsh とその子をプロセスのグループごと終える」 ハーネス(tests/cli/zsh_completion_harness.py)は、外側の zsh から辿った子孫のプロセスを 1 つずつ見つけて終える(killpg と kill の両方を使う)。プロセスのグループだけを終える形にはしていない zpty の子(対話の zsh)は別のセッションで動き、外側の zsh のプロセスのグループに入らない。グループだけを終えると子が残る。確定仕様(cli-argument-resolution.md の「時間切れ」の行)は「起動した zsh とその子孫を終える」と書いてあり、実装と合っている
確定仕様の改め「関連リンク」の行(実装 PR のリンクを足す) cli-argument-resolution.md の関連リンクには、実装 PR ではなく課題 #455 へのリンクを足した 突き合わせの時点で実装 PR が無く、番号が決まっていない。PR を作った後に差し替える

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

🤖 Generated with Claude Code

takemi-ohama and others added 3 commits October 12, 2026 17:46
zsh/zpty で対話の zsh を起こし compadd を包んで、[name] と --context の
集合のすべての道で etc/_devbase が出す候補を期待と比べる。zsh か zsh/zpty が
無ければ、DEVBASE_TEST_REQUIRE_ZSH=1 のときだけ落とし、ほかは飛ばす。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
zsh を起動する検査が無いことを前提にした記述(決定 9・決定 13・テスト観点)を改め、
補完の実行テストの小節と決定 14〜17 を足す。CI の確定仕様に pytest のジョブの zsh と印を足す。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@takemi-ohama
takemi-ohama marked this pull request as ready for review October 12, 2026 08:58
@takemi-ohama
takemi-ohama merged commit f2a751c into sprint/m8a Oct 12, 2026
10 checks passed
@takemi-ohama takemi-ohama mentioned this pull request Oct 12, 2026
3 tasks done
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

#455 のマージ前の手動確認(conductor、2026-10-12、sprint/m8a の 1bed59f、macOS の zsh 5.9)

受け入れ条件 6: 合格。 今の etc/_devbase では tests/cli/test_zsh_completion_run.py が 17 passed。etc/_devbase を git show 54ed5bf^:etc/_devbase に差し替えると 4 failed, 13 passed になった。[name] の行は 14 行が落ち、行ごとに打った行・期待・実際の候補が並ぶ:

E       AssertionError: etc/_devbase の補完が期待の候補を出さない(14 行):
E           打った行: 'devbase up '
E             期待: proj-a, proj-b を含む
E             実際: --context

差し替えは git checkout で戻した(差分 0 行)。

受け入れ条件 7: 合格。 zsh を PATH から外して流した(uv・git などだけを置いたディレクトリを PATH にした)。

印 DEVBASE_TEST_REQUIRE_ZSH 結果
無し 8 passed, 9 skipped。飛ばした理由は zsh が無いため、zsh の補完の実行テストを飛ばす。-q でも warnings summary が出る。ほかのテストは走る
1 8 passed, 1 skipped, 8 errors。理由は DEVBASE_TEST_REQUIRE_ZSH=1 なのに zsh が無い。zsh の補完の実行テストを流せない

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