From 787154775e5c1cf387116d36138bc83bf36ffd9d Mon Sep 17 00:00:00 2001 From: Nguyen Thanh Dat Date: Tue, 25 Aug 2026 18:35:26 +0700 Subject: [PATCH] test(locale-agents): set process.exitCode so the summary always flushes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Review feedback on #2879. stdout is async when it is a pipe, which is exactly how tests/run-all.js runs these files, and process.exit() does not wait for pending writes — so exiting that way can drop the Passed:/Failed: lines the aggregator totals, defeating the point of printing them. The sibling tests/ci/ito-*-skill.test.js files already use process.exitCode. Still exits 1 on drift and 0 when clean. --- tests/ci/locale-agent-frontmatter.test.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/ci/locale-agent-frontmatter.test.js b/tests/ci/locale-agent-frontmatter.test.js index 454e1e002..83ba42ec3 100644 --- a/tests/ci/locale-agent-frontmatter.test.js +++ b/tests/ci/locale-agent-frontmatter.test.js @@ -195,7 +195,10 @@ function main() { console.log(`\n Checked ${localeFiles.length} locale docs against ${canonical.size} agents`); console.log(` Passed: ${passed}`); console.log(` Failed: ${failed}`); - if (failed > 0) process.exit(1); + // exitCode, not exit(1): stdout is async when it is a pipe, which is how + // tests/run-all.js runs this, and process.exit() does not wait for pending + // writes — it could drop the two lines above, which the aggregator totals. + if (failed > 0) process.exitCode = 1; } main();