Skip to content

tests/cli の 5 ファイルがラッパーの関数を sed で消して eval している(exec_wrapper へ移す) #339

Closed

Description

@takemi-ohama

何を見つけたか

tests/cli の次の 5 ファイルが、bin/devbase の関数(run_python / cmd_build など)と DEVBASE_ROOT= の行を sed で消してから eval するハーネスでラッパーを動かしている。

ファイル sed の数 消すもの・現状
tests/cli/test_wrapper_dispatch.py 1(:51-52) run_python と ensure_uv を消す。DEVBASE_ROOT= の行は残るため、環境変数で渡した値は上書きされる。bash -c の下では BASH_SOURCE[0] が空になり、DEVBASE_ROOT が pytest の cwd の親になる(リポジトリの外の projects/ を見る)
tests/cli/test_open_command.py 1(:126-129) 関数と DEVBASE_ROOT= の行を消す
tests/cli/test_wrapper_build_context.py 1(:31-34) 関数と DEVBASE_ROOT= の行を消す
tests/cli/test_project_name_resolution.py 2(:374・:432) :579-668 は既に exec_wrapper を使っており、sed の経路と混在する
tests/cli/test_post_start_command.py 1(:76-79) run_python / ensure_uv / cmd_build と DEVBASE_ROOT= の行を消す(#371 の project post-start の振り分け)

確かめ方: grep -ln "sed -e" tests/cli/*.py がこの 5 ファイルだけを返す(main d433e55、2026-10-03)。test_build_image_argument.py は #305 で exec_wrapper へ移っている。

sed の範囲指定は関数の表記(^name() から ^} まで)に依存するため、bin/devbase の関数の名前や書き方を変えると黙って外れ、テストが本来の経路を見なくなる。また DEVBASE_ROOT= の行を消して環境変数の値を使わせるため、実環境の DEVBASE_ROOT を渡し忘れると実環境の projects/ を見る。tests/cli/conftest.py の exec_wrapper(:80。本物のラッパーを一時ディレクトリへ複製し、偽の uv だけを差し替える)へ移せば両方が無くなる。

この書き方は新しいサブコマンドのテストでも使われ続けており、exec_wrapper へ寄せない限り増える。

どこで見つけたか

issue #305 の設計(前提 5 と未決の 2 行目)。

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

#305 の受け入れ条件は test_build_image_argument.py の 1 ファイルだけを対象にし、残りのファイルは「含まない」に挙げている(起票時の指摘がその 1 ファイルだけのため)。5 ファイルはそれぞれ別の振り分け(open・--context・name 解決・post-start など)を確かめており、移すときに観測点(UV: 行・PWD: 行)をファイルごとに決め直す必要がある。根拠: 共通原則の「判断の範囲は目の前の変更に限る」(MVV 版 1)。

直さないと何が起きるか

振る舞いの不具合ではない。bin/devbase の関数の並びや名前を変えたとき、この 5 ファイルのテストが黙って本物の経路を外れ、ラッパーの退行を見逃す恐れがある。

由来

issue #305

進行

モード: —

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

振り返り: #421 (comment)

Activity

  1. changed the title [-]tests/cli の 4 ファイルがラッパーの関数を sed で消して eval している(exec_wrapper へ移す)[/-] [+]tests/cli の 5 ファイルがラッパーの関数を sed で消して eval している(exec_wrapper へ移す)[/+] on Oct 2, 2026
  2. added a commit that references this issue on Oct 3, 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

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions