Skip to content

完了判定の設計とテストの照合が、サブディレクトリからの相対パスで書いたテストを実在するのに無いと判定して止まる #2553

Open

Description

@takemi-ohama

何を見つけたか

完了判定の「設計とテストの照合」(design-match.py tests)が、設計文書にサブディレクトリからの相対パスで書いたテストファイルを、実在するのに「HEAD に無い(missing)」と判定して止まる。

  • 入力: スプリント lfactory3-6 のマージ時点(8421bcf5)の issues/issue-2199-design.md。テストを routes/factory.test.ts・routes/sprint-views.test.ts・handlers/api.test.ts・github-oidc/app.test.ts と、factory/api/src/ を省いた形で書いている
  • 観測: design-match.py --root <8421bcf5 の作業ツリー> tests --issue 2199 が終了コード 1、「4 件が HEAD に無い」を返す
  • 実際: 4 件とも factory/api/src/ の下に実在する(git ls-tree -r --name-only 8421bcf5 で 4 行を確認)。ファイル名だけで書いた store.test.ts・service.test.ts は present になる
  • 原因: _path_present は、/ を含む名前を根からのパスとしてだけ照合し、末尾が一致するファイルを探さない(plugins/ndf/scripts/design-match.py 143〜147 行)

どこで見つけたか

  • 実装の Pull Request #2199 を実装する(スプリント lfactory3-6) #2533 の本文の「テスト」の表: 「設計とテストの照合 | 停止(exit 1)」「4 件それぞれの名前と原因は、ステップの出力が途中で切れているため未確認。マージの前に確かめる」
  • その後の スプリント lfactory3-6 #2534 の本文とコメントに確かめた記録は無く、スプリントはマージされた(スプリント lfactory3-6 の振り返りで、上の入力で再実行して再現した)

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

#2199 の受け入れ条件は factory/ のリファクタリングで、NDF の完了判定のスクリプトは含まない。根拠: Value 3(利用者の実行で誤った停止が出た不具合)・Value 8(承認資料に「未確認」が残る)(MVV 版 5)

#2118 は同じ照合が、設計で改名を決めたテストを止まりと判定することと、止まった理由を全文で残すことを扱う。ここで扱う相対パスの照合は #2118 の範囲に無い。

直さないと何が起きるか

  • モノレポのように、設計文書がサブプロジェクトからの相対パスでテストを書くリポジトリ(このリポジトリの factory/ を含む)で、照合が毎回止まる
  • 止まりが誤判定か本当の欠けかを人も AI も確かめないまま進み、本当にテストが欠けた場合と区別できなくなる。今回は「マージ前に確かめる」と書いたまま確かめた記録が無くマージされた

起票者の推定

  • / を含む名前も、根からのパスで見つからなければ末尾が一致するファイル(*/routes/factory.test.ts)を探してよい。複数に当たるときの扱いは別に決める(推した出所: design-match.py 147 行のファイル名だけの照合の規則)
  • 照合が止まったまま「マージ前に確かめる」と書いた Pull Request は、確かめた記録が無ければマージの前に止める(推した出所: #2199 を実装する(スプリント lfactory3-6) #2533 の本文と スプリント lfactory3-6 #2534 に記録が無いこと)

由来

PR #2533

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