diff --git a/scripts/__tests__/cancel-stale-pr-ci-help.test.mjs b/scripts/__tests__/cancel-stale-pr-ci-help.test.mjs new file mode 100644 index 000000000..22a1395b4 --- /dev/null +++ b/scripts/__tests__/cancel-stale-pr-ci-help.test.mjs @@ -0,0 +1,38 @@ +import assert from 'node:assert/strict'; +import { spawnSync } from 'node:child_process'; +import fs from 'node:fs'; +import os from 'node:os'; +import { dirname, join, 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, '..', 'cancel-stale-pr-ci.mjs'); + +function runHelp(flag) { + const binDir = fs.mkdtempSync(join(os.tmpdir(), 'openhuman-gh-stub-')); + fs.writeFileSync( + join(binDir, 'gh'), + '#!/usr/bin/env sh\necho "gh should not run for help" >&2\nexit 99\n', + { mode: 0o755 }, + ); + + return spawnSync(process.execPath, [SCRIPT, flag], { + encoding: 'utf8', + env: { + ...process.env, + PATH: `${binDir}${process.platform === 'win32' ? ';' : ':'}${process.env.PATH ?? ''}`, + }, + }); +} + +test('cancel-stale-pr-ci help exits before invoking gh', () => { + for (const flag of ['--help', '-h']) { + const result = runHelp(flag); + + assert.equal(result.status, 0, result.stderr); + assert.match(result.stdout, /Usage: cancel-stale-pr-ci\.mjs \[options\]/); + assert.match(result.stdout, /-h, --help\s+Show this message\./); + assert.equal(result.stderr, ''); + } +}); diff --git a/scripts/cancel-stale-pr-ci.mjs b/scripts/cancel-stale-pr-ci.mjs index 276d70b08..74c30d23b 100644 --- a/scripts/cancel-stale-pr-ci.mjs +++ b/scripts/cancel-stale-pr-ci.mjs @@ -21,7 +21,7 @@ Options: --exclude-workflow Case-insensitive substring/regex fragment to skip. May be passed multiple times. Default: ${DEFAULT_EXCLUDE_WORKFLOW_PATTERNS.join(', ')} --execute Actually cancel matching runs. - --help Show this message. + -h, --help Show this message. Examples: node scripts/cancel-stale-pr-ci.mjs @@ -61,7 +61,7 @@ function parseArgs(argv) { for (let i = 0; i < argv.length; i += 1) { const arg = argv[i]; - if (arg === '--help') { + if (arg === '--help' || arg === '-h') { printUsage(); process.exit(0); }