From 50b626cf87cccffdc3d91a6bb384f01f996ad9b4 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Fri, 26 Jun 2026 14:09:40 +0800 Subject: [PATCH] =?UTF-8?q?test(tags):=20=E9=A9=97=E8=AD=89=20categorizeTa?= =?UTF-8?q?gs=20=E5=B0=8D=20null/=E9=9D=9E=E5=AD=97=E4=B8=B2=20name=20?= =?UTF-8?q?=E4=B8=8D=E6=8B=8B=E4=BE=8B=E5=A4=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增測試:含 null、name 為數字、缺 name 的項目皆歸為 skip,正常 name 維持 keep。測試共 65 項全數通過。 Co-Authored-By: Claude Opus 4.8 (1M context) --- app/test/tags.test.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/test/tags.test.js b/app/test/tags.test.js index 5e80792..e1b26af 100644 --- a/app/test/tags.test.js +++ b/app/test/tags.test.js @@ -30,6 +30,18 @@ test('categorizeTags 將無名稱的 tag 標記為略過', () => { assert.equal(empty.action, 'skip') }) +test('categorizeTags 對 null/非字串 name 的項目標記為略過(不拋例外)', () => { + const odd = [null, { name: 123 }, {}, { name: 'v1' }] + let result + assert.doesNotThrow(() => { + result = categorizeTags(odd, ['v1']) + }) + assert.deepEqual( + result.map((r) => r.action), + ['skip', 'skip', 'skip', 'keep'], + ) +}) + test('categorizeTags 在沒有任何 release 指定時刪除所有具名 tag', () => { const result = categorizeTags(tags, []) const deletes = result.filter(({ action }) => action === 'delete')