test(testing): build test-scan suite payloads without MSYS path conversion
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 72/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- bash, git, shell
調査の方向性
plugins/testing/hooks/test-scan.test.sh から始める: 各 jq --arg パスビルダー(payload()、bash_payload()、diff_of()、および 516、522、548、607 行付近のインライン呼び出し)に、呼び出しごとに MSYS_NO_PATHCONV=1 MSYS2_ARG_CONV_EXCL='*' を前置する。PR #6356 と同様で、それらの変数は export しない。297a19f13bd5fbd8 の session-key oracle は変更しない。ネイティブ jq の Windows Git Bash で bash plugins/testing/hooks/test-scan.test.sh を実行する。列挙した assertion で残る .file/.repo の不一致は、まだ失敗する場合は follow-up として扱う。
索引モデルが issue の本文から書いたものです。
説明
Summary
On Windows Git Bash with a native jq.exe, plugins/testing/hooks/test-scan.test.sh builds its hook payloads by passing POSIX paths to jq through --arg, and MSYS rewrites those arguments to Windows form. The hook then hashes a converted transcript_path against an unconverted CLAUDE_PROJECT_DIR, so the project-key checks cannot match their literal. This is the same fixture defect #6266 fixed for the test-judge suites; PR #6356 added the per-call MSYS_NO_PATHCONV=1 MSYS2_ARG_CONV_EXCL='*' prefix there but did not touch test-scan.test.sh, which carries no such prefix anywhere.
This is a test-fixture defect. Live sessions are unaffected for the reasons #6266 gives: Claude Code supplies drive-letter paths, which MSYS leaves alone.
plugins/testing/skills/audit/scripts/cant-fail-scan.test.sh was checked and is not affected: its only jq call (:1734) reads a file operand, where conversion is wanted. A full local run on Windows Git Bash passed 1195 of 1195.
Steps to reproduce
- On Windows Git Bash where
jqresolves to a native Windows binary, runbash plugins/testing/hooks/test-scan.test.sh. - Look at the
pkey:checks.
Not run this pass (see Evidence); the failure is derived from the code.
Expected
The pkey: checks pass, as they do on Linux: the record lands under sessions/297a19f13bd5fbd8/.
Actual (derived)
payload() passes TPATH=/nonexistent/transcripts/-proj/a.jsonl through --arg tp. MSYS converts it to a path under the Git install root (for example C:/Program Files/Git/nonexistent/transcripts/-proj/a.jsonl), while CLAUDE_PROJECT_DIR=/nonexistent/proj reaches the hook unconverted through the environment. testing::pkey hashes the mixed pair, so the key is not 297a19f13bd5fbd8 and the checks at :437, :439, :441 and :446 fail. :446 also passes PCWD=$P through --arg c, which is converted too.
Evidence (file:line, origin/main 9680bdaa1)
plugins/testing/hooks/test-scan.test.sh:135-141:payload()runsjq -cn --arg t ... --arg f "$2" ... --arg tp "$TPATH" --arg c "$PCWD"with no MSYS prefix.test-scan.test.sh:434-446:P=/nonexistent/proj,TP=/nonexistent/transcripts/-proj;CLAUDE_PROJECT_DIR=$Pis set as an environment prefix (not converted),TPATHandPCWDgo throughpayload()(converted). Assertions expect/sessions/297a19f13bd5fbd8/.plugins/testing/hooks/test-scan.sh:55-63reads.cwdand.transcript_pathraw from the payload, and:90callstesting::pkey "${CLAUDE_PROJECT_DIR:-$pcwd}" "$tpath".plugins/testing/hooks/scanner-run.sh:37-44:testing::pkeyhashes$1and the directory of$2with no path-form normalization.- Other
--argpath builders in the same file with no prefix:bash_payload():474(--arg tp,--arg c),diff_of():481(--arg f), and inline builders at:516,:522,:548,:607. - Likely second failure, inferred:
:378-379asserts.file == "$REPO/src/mixed.test.ts" and .repo == "$REPO"with$REPOundermktemp -d(a/c/...or/tmp/...path). The recorded.filecomes from the converted payload path, and.repofrom the git toplevel, which Git for Windows reports inC:/...form. The per-call prefix alone may not fix this one, becausetest-scan.sh:94itself passes--arg file "$FILE"to native jq; PR #6356's Related section names the same hook-side follow-up for the judge hooks. - Precedent for the fix: PR #6356 (
judge-test-helpers.sh,test-judge.test.sh,test-judge-start.test.sh), andlib/hook-utils.test.sh:393-399. - Not run: this suite was not executed on Windows this pass, so no failure count is measured. The mechanism rests on the code above and on the native
jq.exeestablished in #6266.
Suggested fix
Prefix each jq call in test-scan.test.sh that passes a filesystem path through --arg into a payload (payload(), bash_payload(), diff_of(), and the inline builders at :516, :522, :548, :607) with MSYS_NO_PATHCONV=1 MSYS2_ARG_CONV_EXCL='*', per call, as PR #6356 did. Do not export either variable; the node exec-bash.mjs calls at :159 and :503 need conversion. Leave the 297a19f13bd5fbd8 literal as the independent oracle. Then run the suite on Windows Git Bash and handle any remaining .file/.repo path-form mismatches at :378-379, :544 and :610 separately.
Related: #6266, PR #6356, #6135.
- 主要言語
- Shell
- スター
- 22
- フォーク
- 2
- 平均マージ
- 5時間 11分
- マージ済み PR(30日)
- 838
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
melodic-software/claude-code-plugins のほかの issue
-
good first issue needs-triage priority: medium
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
melodic-software/claude-code-plugins#6631 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
melodic-software/claude-code-plugins#6547 ·
メンテナーはふだん 1 日以内に返信
-
needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
melodic-software/claude-code-plugins#6535 ·
メンテナーはふだん 1 日以内に返信
-
test_comment_census.py: SccArgv flag-shaped-filename test errors on Windows (#!/bin/sh scc shim)オープンgood first issue needs-triage priority: low
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
melodic-software/claude-code-plugins#6532 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
good first issue needs-triage priority: low
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
melodic-software/claude-code-plugins#6386 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
melodic-software/claude-code-plugins の issue をすべて見る
似ている issue
-
Lid close does not lock the session on Apple Silicon (lid-close bind skips omarchy-system-lid-close)オープン
難易度 1/5 1〜3時間 初心者へのやさしさ 90/100
omacom/omarchy-mac#701 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
A 20.x release after 21.0.0 would move `latest` back to 20.x, and `next` stays on the release candidate対応中かも @armando-navarro が今日担当しました。 オープンcomp: build/pipeline type: bug version: current (v17+)
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
angular/angularfire#3790 ·
メンテナーはふだん 3 日以内に返信
-
ready-for-agent
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
LucasSantana-Dev/Lucky#2698 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
collabnix/awesome-mcp-lists#179 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100