test(script-contract): 讓 --key=value 的值可以本身以 -- 開頭

commit 訊息與 PR 描述裡出現 --flag 是常態,而原本的檢查對兩種寫法一視同仁:值只要以
-- 開頭就報「需要一個值」。空格分隔的寫法確實分不出「值」與「打錯的 flag」,但等號寫法
沒有這個歧義,不該一起擋掉。

這是實際撞到的:拿 commit-split 提交它自己時,--body 的內容第一行就是「--repo 與
--issue-repo 的差別」,整個 commit 因此做不出來。空格寫法的錯誤訊息現在會指路到等號寫法。
This commit is contained in:
2026-09-17 08:23:27 +00:00
parent 1c6e7f85bb
commit da5b670f29
+22
View File
@@ -55,6 +55,28 @@ test('--repo 格式不是 owner/name 時失敗', async (t) => {
assert.equal(json.error.code, 'BAD_REPO'); assert.equal(json.error.code, 'BAD_REPO');
}); });
test('--key=value 的值可以本身就以 -- 開頭', async (t) => {
// commit 訊息與 PR 描述裡出現 --flag 是常態;空格分隔的寫法分不出來,等號寫法可以
const stub = await withStub(t);
const { json } = await runScript('labels-list.js', ['--repo=--看起來像 flag 的值'], {
env: envFor(stub),
});
assert.equal(json.error.code, 'BAD_REPO', '要走到 repo 格式檢查,而不是被當成缺值');
});
test('--key value 的值以 -- 開頭時仍然擋下,並指出等號寫法', async (t) => {
const stub = await withStub(t);
const { json } = await runScript('labels-list.js', ['--repo', '--看起來像 flag 的值'], {
env: envFor(stub),
});
assert.equal(json.error.code, 'MISSING_FLAG');
assert.match(json.error.message, /--repo=/);
});
test('--key=value 與 --key value 兩種寫法等價', async (t) => { test('--key=value 與 --key value 兩種寫法等價', async (t) => {
const stub = await withStub(t); const stub = await withStub(t);