Skip to content

Commit 7078d9e

Browse files
xesrevinuGit Agent
andcommitted
test(cli): add CLI smoke tests for version and help
- Added a test to verify the package version is printed. - Included tests to check for ShowHelp internals leakage. This commit enhances the test suite by adding several smoke tests to Co-Authored-By: Git Agent <noreply@git-agent.dev>
1 parent d10549b commit 7078d9e

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

tests/cli-smoke.test.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,32 @@ afterEach(() => {
3030
});
3131

3232
describe("cli smoke", () => {
33+
it("prints the package version", () => {
34+
const result = runCli(["version"]);
35+
36+
expect(result.status).toBe(0);
37+
expect(result.stdout.trim()).toBe("0.1.0");
38+
expect(result.stderr).toBe("");
39+
});
40+
41+
it("does not leak ShowHelp internals when invoked without a subcommand", () => {
42+
const result = runCli([]);
43+
44+
expect(result.status).toBe(0);
45+
expect(result.stdout).toContain("USAGE");
46+
expect(result.stderr).not.toContain("~effect/cli/CliError/ShowHelp");
47+
expect(result.stderr).not.toContain("Help requested");
48+
});
49+
50+
it("does not leak ShowHelp internals for unknown subcommands", () => {
51+
const result = runCli(["wat"]);
52+
53+
expect(result.status).toBe(1);
54+
expect(result.stderr).toContain('Unknown subcommand "wat" for "git-agent"');
55+
expect(result.stderr).not.toContain("~effect/cli/CliError/ShowHelp");
56+
expect(result.stderr).not.toContain("Help requested");
57+
});
58+
3359
it("config get prefers local hook over project hook", () => {
3460
const dir = newGitRepo();
3561
mkdirSync(join(dir, ".git-agent"), { recursive: true });
@@ -58,4 +84,16 @@ describe("cli smoke", () => {
5884
expect(result.status).not.toBe(0);
5985
expect(result.stderr).toContain("reading hook file");
6086
});
87+
88+
it("init --local reports the local config path when it already exists", () => {
89+
const dir = newGitRepo();
90+
mkdirSync(join(dir, ".git-agent"), { recursive: true });
91+
writeFileSync(join(dir, ".git-agent", "config.local.yml"), "hook:\n - conventional\n");
92+
93+
const result = runCli(["init", "--cwd", dir, "--local", "--hook", "conventional"]);
94+
95+
expect(result.status).toBe(1);
96+
expect(result.stderr).toContain(join(dir, ".git-agent", "config.local.yml"));
97+
expect(result.stderr).not.toContain(join(dir, ".git-agent", "config.yml"));
98+
});
6199
});

0 commit comments

Comments
 (0)