Files
get-shit-done/tests/workflow-compat.test.cjs
Tom Boucher c0efb7b9f1 fix(workflows): remove deprecated --no-input flag from claude CLI calls (#1759) (#1842)
claude --no-input was removed in Claude Code >= v2.1.81 and causes an
immediate crash ("error: unknown option '--no-input'"). The -p/--print
flag already handles non-interactive output, so --no-input is redundant.

Adds a regression test in tests/workflow-compat.test.cjs that scans all
workflow, command, and agent .md files to ensure --no-input never returns.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 22:54:12 -04:00

63 lines
1.9 KiB
JavaScript

/**
* Regression guard for #1759: the --no-input flag was removed from Claude Code
* >= v2.1.81 and causes an immediate crash ("error: unknown option '--no-input'").
*
* The -p / --print flag already handles non-interactive output so --no-input
* must never appear in workflow, command, or agent files.
*/
const { describe, test } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('fs');
const path = require('path');
const ROOT = path.join(__dirname, '..');
/** Recursively collect all .md files under a directory. */
function collectMdFiles(dir) {
const results = [];
if (!fs.existsSync(dir)) return results;
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
const full = path.join(dir, entry.name);
if (entry.isDirectory()) {
results.push(...collectMdFiles(full));
} else if (entry.isFile() && entry.name.endsWith('.md')) {
results.push(full);
}
}
return results;
}
const SCAN_DIRS = [
path.join(ROOT, 'get-shit-done', 'workflows'),
path.join(ROOT, 'get-shit-done', 'references'),
path.join(ROOT, 'commands', 'gsd'),
path.join(ROOT, 'agents'),
];
describe('workflow CLI compatibility (#1759)', () => {
test('no workflow/command/agent file uses the deprecated --no-input flag', () => {
const violations = [];
for (const dir of SCAN_DIRS) {
for (const file of collectMdFiles(dir)) {
const content = fs.readFileSync(file, 'utf-8');
if (content.includes('--no-input')) {
const rel = path.relative(ROOT, file);
violations.push(rel);
}
}
}
assert.strictEqual(
violations.length,
0,
[
'--no-input was removed in Claude Code >= v2.1.81 and must not appear in any workflow/command/agent file.',
'Use -p / --print instead (already implies non-interactive output).',
'Violations found:',
...violations.map(v => ' ' + v),
].join('\n')
);
});
});