Skip to content

一致テストが補完の --context の余分を比べず、--context を取らない道で補完が --context を勧めても落ちない #453

Closed

Description

@takemi-ohama

何を見つけたか

--context を受け付けない道で補完が --context を出しても、一致テストは落ちない。tests/cli/test_name_context_consistency.py の test_bash_completion_offers_context_after_path・test_bash_completion_offers_context_after_name・test_zsh_completion_offers_context は、--context の集合(CONTEXT_PATHS)の道で --context が欠けていないかだけを見る。たとえば bash の env set の分岐に --context を足すか、zsh の env set の分岐に '--context[Docker context]:context:' を足しても、全体のテストは通る。argparse は devbase env set --context x を退けるため、補完が勧めた旗で利用者のコマンドが止まる。

#435 の設計(決定 5)は「一致テストは --context の欠けと余分の両方を比べる。余分を比べる道は子の parser を持たない末端の道に限る」と決め、不変条件 I4・I6 とテスト設計にも余分の行があったが、実装(PR #449)に余分の比べ方が入らず、PR の本文にも外した理由が書かれていない。

どこで見つけたか

スプリント m10b の確定仕様化(PR #451)で、#435 の設計の決定の記録を実装と突き合わせたとき。確定仕様 docs/specifications/cli-argument-resolution.md には、実装にない決定 5 を写していない。

なぜこの変更の範囲外なのか

#435 の受け入れ条件 1〜8 は欠けの検出だけを求め(受け入れ条件 5)、余分の比べ方は設計の判断で足したものである。受け入れ条件は満たしており、確定仕様化の PR はコードを変えない。根拠: Mission(MVV 版 1)

直さないと何が起きるか

補完の写しが列挙の正本より広がっても検査で拾えない。--context を取らない道に誤って --context を足す変更が入ると、利用者が補完に従って打ったコマンドが argparse のエラー(終了コード 2)で止まる。今の補完に余分があるかは確かめていない。

受け入れ条件

2026-10-12 に足した(スプリント m8b のモード判定と要求)。#435 の設計の決定 5 を、この課題で実装へ入れる。

# 条件 確かめ方
1 bash の補完で、--context を受け付けない末端の道(子の parser を持たない道。例 env set)に --context を足すと、一致テストがその道を挙げて落ちる 補完の bash の分岐へ一時に --context を足して、全体のテストで落ちることを確かめ、戻す
2 zsh の補完で同じく --context を足すと、一致テストがその道を挙げて落ちる。比べるのは #455 の道具(tests/cli/zsh_completion_harness.py)で得た実際の候補でよい 1 と同じく zsh の分岐へ一時に足して確かめる
3 余分を比べるのは子の parser を持たない末端の道に限り、親の道(project profile など)の zsh の本体が子の分岐を含むことで誤って落ちない 今の main の補完で一致テストが通る
4 今の補完に余分があれば直す(無ければ「無かった」と PR の本文に書く) 1〜3 のテストが今の補完で通る
5 既存の欠けの検査(test_bash_completion_offers_context_after_path など)は弱めない 道を 1 つ消すと従来どおり落ちる

関連

由来

issue #435

進行

モード: —

  • 要求と受け入れ条件
  • 作業場所の用意 — 2026-10-12 22:54
  • 設計
  • 素材の収集と出典の確定
  • ドキュメント再構成
  • ドキュメントレビュー
  • 計画 — 2026-10-12 22:53
  • 実装 — 2026-10-12 23:39
  • 構造改善 — 2026-10-12 23:51
  • 実装レビュー — 2026-10-13 00:09
  • 完了判定 — 2026-10-12 23:42
  • Pull Request — 2026-10-12 23:46
  • 確定仕様化 — 2026-10-13 00:50
  • 後片付け — 2026-10-13 01:00
  • 配布 — 2026-10-13 01:00
  • 体裁レビュー
  • リリース後テスト — 2026-10-13 01:03
  • 振り返り — 2026-10-13 01:03
  • 棚卸し — 2026-10-13 01:20

振り返り: #472 (comment)

Activity

  1. added a commit that references this issue on Oct 12, 2026
  2. added a commit that references this issue on Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions