- Fix npm test glob pattern for Node >= 21 compatibility - Add --version/-v flag to display package version - Add validate command: run 78 profile checks (files, skills, frontmatter, legacy patterns, AGENTS mapping) - Add list command: display all 13 bundled skills with descriptions - Add --dry-run/-n flag for init: preview files without copying - Add --backup/-b flag for init --force: backup existing .agent before overwrite - Add name field to workflow frontmatter (brainstorm, execute-plan, write-plan) - Expand smoke check to cover all 13 skills and new command files - Increase test coverage from 3 to 20 tests (cli, init, validate) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
62 lines
1.8 KiB
JavaScript
62 lines
1.8 KiB
JavaScript
import { resolve } from "node:path";
|
|
import { spawnSync } from "node:child_process";
|
|
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
const cliPath = resolve(process.cwd(), "bin/antigravity-superpowers.js");
|
|
|
|
function runCli(args) {
|
|
return spawnSync(process.execPath, [cliPath, ...args], {
|
|
encoding: "utf8",
|
|
});
|
|
}
|
|
|
|
test("--help shows usage information", () => {
|
|
const result = runCli(["--help"]);
|
|
assert.equal(result.status, 0);
|
|
assert.match(result.stdout, /Usage:/);
|
|
assert.match(result.stdout, /Commands:/);
|
|
assert.match(result.stdout, /init/);
|
|
assert.match(result.stdout, /validate/);
|
|
assert.match(result.stdout, /list/);
|
|
});
|
|
|
|
test("-h shows usage information", () => {
|
|
const result = runCli(["-h"]);
|
|
assert.equal(result.status, 0);
|
|
assert.match(result.stdout, /Usage:/);
|
|
});
|
|
|
|
test("no arguments shows help", () => {
|
|
const result = runCli([]);
|
|
assert.equal(result.status, 0);
|
|
assert.match(result.stdout, /Usage:/);
|
|
});
|
|
|
|
test("--version shows version number", () => {
|
|
const result = runCli(["--version"]);
|
|
assert.equal(result.status, 0);
|
|
assert.match(result.stdout.trim(), /^\d+\.\d+\.\d+$/);
|
|
});
|
|
|
|
test("-v shows version number", () => {
|
|
const result = runCli(["-v"]);
|
|
assert.equal(result.status, 0);
|
|
assert.match(result.stdout.trim(), /^\d+\.\d+\.\d+$/);
|
|
});
|
|
|
|
test("unknown command returns exit code 1", () => {
|
|
const result = runCli(["foobar"]);
|
|
assert.equal(result.status, 1);
|
|
assert.match(result.stderr, /Unknown command: foobar/);
|
|
});
|
|
|
|
test("list shows available skills", () => {
|
|
const result = runCli(["list"]);
|
|
assert.equal(result.status, 0);
|
|
assert.match(result.stdout, /13 skills available/);
|
|
assert.match(result.stdout, /brainstorming/);
|
|
assert.match(result.stdout, /test-driven-development/);
|
|
assert.match(result.stdout, /single-flow-task-execution/);
|
|
});
|