From da5b670f295eb1cd42662d6bc4f73d29a1065723 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 17 Sep 2026 08:23:27 +0000 Subject: [PATCH] =?UTF-8?q?test(script-contract):=20=E8=AE=93=20--key=3Dva?= =?UTF-8?q?lue=20=E7=9A=84=E5=80=BC=E5=8F=AF=E4=BB=A5=E6=9C=AC=E8=BA=AB?= =?UTF-8?q?=E4=BB=A5=20--=20=E9=96=8B=E9=A0=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 訊息與 PR 描述裡出現 --flag 是常態,而原本的檢查對兩種寫法一視同仁:值只要以 -- 開頭就報「需要一個值」。空格分隔的寫法確實分不出「值」與「打錯的 flag」,但等號寫法 沒有這個歧義,不該一起擋掉。 這是實際撞到的:拿 commit-split 提交它自己時,--body 的內容第一行就是「--repo 與 --issue-repo 的差別」,整個 commit 因此做不出來。空格寫法的錯誤訊息現在會指路到等號寫法。 --- test/script-contract.test.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/script-contract.test.js b/test/script-contract.test.js index 1c0037a..1a54cd2 100644 --- a/test/script-contract.test.js +++ b/test/script-contract.test.js @@ -55,6 +55,28 @@ test('--repo 格式不是 owner/name 時失敗', async (t) => { 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) => { const stub = await withStub(t);