From 17a55818f9b185146aca14ab88af52c2161c39fd Mon Sep 17 00:00:00 2001 From: Alexzhu Date: Tue, 2 Jun 2026 08:16:11 +0800 Subject: [PATCH] fix(scripts): make checklist help exit cleanly (#3067) Co-authored-by: Steven Enamakel --- scripts/__tests__/check-pr-checklist.test.mjs | 31 +++++++++++++++++++ scripts/check-pr-checklist.mjs | 10 +++++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 scripts/__tests__/check-pr-checklist.test.mjs diff --git a/scripts/__tests__/check-pr-checklist.test.mjs b/scripts/__tests__/check-pr-checklist.test.mjs new file mode 100644 index 000000000..a1a230e79 --- /dev/null +++ b/scripts/__tests__/check-pr-checklist.test.mjs @@ -0,0 +1,31 @@ +import assert from 'node:assert/strict'; +import { spawnSync } from 'node:child_process'; +import { dirname, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { test } from 'node:test'; + +const HERE = dirname(fileURLToPath(import.meta.url)); +const SCRIPT = resolve(HERE, '..', 'check-pr-checklist.mjs'); + +function run(args, options = {}) { + return spawnSync(process.execPath, [SCRIPT, ...args], { + encoding: 'utf8', + ...options, + }); +} + +test('check-pr-checklist --help prints usage and exits 0', () => { + const result = run(['--help']); + + assert.equal(result.status, 0, result.stderr); + assert.match(result.stdout, /Usage: check-pr-checklist\.mjs \[body-file\|-\]/); + assert.equal(result.stderr, ''); +}); + +test('check-pr-checklist -h prints usage and exits 0', () => { + const result = run(['-h']); + + assert.equal(result.status, 0, result.stderr); + assert.match(result.stdout, /Usage: check-pr-checklist\.mjs \[body-file\|-\]/); + assert.equal(result.stderr, ''); +}); diff --git a/scripts/check-pr-checklist.mjs b/scripts/check-pr-checklist.mjs index fb4bbe7c2..80e18a6a0 100644 --- a/scripts/check-pr-checklist.mjs +++ b/scripts/check-pr-checklist.mjs @@ -2,10 +2,18 @@ import { readFileSync } from 'node:fs'; import { parseChecklist, summarize } from './lib/checklist-parser.mjs'; +function usage() { + return 'Usage: check-pr-checklist.mjs [body-file|-]'; +} + function readBody() { const [source, extra] = process.argv.slice(2); + if (source === '--help' || source === '-h') { + console.log(usage()); + process.exit(0); + } if (extra) { - console.error('Usage: check-pr-checklist.mjs [body-file|-]'); + console.error(usage()); process.exit(2); } if (source === '-') {