diff --git a/tests/e2e/run.mjs b/tests/e2e/run.mjs index 2d636c9..9d76dec 100644 --- a/tests/e2e/run.mjs +++ b/tests/e2e/run.mjs @@ -1811,6 +1811,26 @@ async function main() { // ---------- 契约形状(agent 实现 ↔ 协议契约)---------- await test('契约形状:只读能力返回字段与 manifest returns_schema 一致', testContractShapes); + // ---------- v2.1.0 L2 平台门控(T04)---------- + // 当前 e2e 跑在 macOS/Linux:system.audit.l2 必须明确报不支持, + // 而不是静默走到别的分支、或报成误导性错误(T04 起门控走统一 assertWindows)。 + await test('v2.1.0 L2 平台门控:非 Windows 明确报不支持 / Windows 上 status 可用', async () => { + const c = await connect(); + try { + if (process.platform === 'win32') { + const r = await c.invoke('system.audit.l2', { action: 'status' }); + assert.equal(r.status, 'ok', 'Windows 上 L2 status 应可用'); + } else { + // 能力执行失败走 result.status=failed(协议层才 reject);按 name 断言 + const r = await c.invoke('system.audit.l2', { action: 'status' }); + assert.equal(r.status, 'failed', '非 Windows 上必须明确失败,不得静默走别的分支'); + assert.equal(r.error?.name, 'E_UNSUPPORTED_PLATFORM', `错误名应为平台不支持,实际 ${r.error?.name}`); + } + } finally { + c.close(); + } + }); + // ---------- v2.0.3 硬化回归(2026-10-13 实测缺陷)---------- await test('v2.0.3 畸形报文不得打死被控端(B-01/B-02 + 崩溃链 + U-01 审计)', () => testMalformedFrames(agent),