From 885b79f8b32fb5a17723ab37b511c0eceeea003a Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 14:02:11 +0800 Subject: [PATCH] =?UTF-8?q?test(diagnostics):=20=E8=A3=9C=E4=B8=8A?= =?UTF-8?q?=E8=A8=BA=E6=96=B7=E9=99=90=E9=95=B7=E8=88=87=20PII=20=E9=81=AE?= =?UTF-8?q?=E7=BD=A9=E6=B8=AC=E8=A9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/review.test.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test/review.test.js b/test/review.test.js index 1364502..bcbe3b8 100644 --- a/test/review.test.js +++ b/test/review.test.js @@ -44,6 +44,25 @@ test('agentFailureDetail 在 debug 模式輸出遮罩後片段', () => { } }); +test('agentFailureDetail 先限長再遮罩並處理常見 PII', () => { + const oldDebug = process.env.ACTIONS_STEP_DEBUG; + process.env.ACTIONS_STEP_DEBUG = 'true'; + try { + const detail = diagnostics.agentFailureDetail({ + ok: false, + error: Object.assign(new Error('boom'), { code: 3 }), + stderr: `${'x'.repeat(520)} token=should-not-be-scanned`, + output: 'user@example.test eyJaaaaaaaaaa.bbbbbbbbbb.cccccccccc', + }); + assert.match(detail, /exit 3/); + assert.doesNotMatch(detail, /should-not-be-scanned|user@example.test|eyJaaaaaaaaaa/); + assert.match(detail, /stdout:\*\*\* \*\*\*/); + } finally { + if (oldDebug === undefined) delete process.env.ACTIONS_STEP_DEBUG; + else process.env.ACTIONS_STEP_DEBUG = oldDebug; + } +}); + test('postOthersToIssue 依序送出 issue 留言以維持排序', async () => { const calls = []; let active = 0;