diff options
| author | 2023-04-28 01:36:44 +0800 | |
|---|---|---|
| committer | 2023-04-28 01:36:44 +0800 | |
| commit | dd84b9d64fb98746a230cd24233ff50a562c39c9 (patch) | |
| tree | b583261ef00b3afe72ec4d6dacb31e57779a6faf /packages/turbo-ignore/__tests__/args.test.ts | |
| parent | 0b46fcd72ac34382387b2bcf9095233efbcc52f4 (diff) | |
| download | HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.tar.gz HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.zip | |
Diffstat (limited to 'packages/turbo-ignore/__tests__/args.test.ts')
| -rw-r--r-- | packages/turbo-ignore/__tests__/args.test.ts | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/packages/turbo-ignore/__tests__/args.test.ts b/packages/turbo-ignore/__tests__/args.test.ts new file mode 100644 index 0000000..f546247 --- /dev/null +++ b/packages/turbo-ignore/__tests__/args.test.ts @@ -0,0 +1,109 @@ +import parseArgs, { help } from "../src/args"; +import pkg from "../package.json"; +import { spyConsole, spyExit } from "@turbo/test-utils"; + +describe("parseArgs()", () => { + const mockConsole = spyConsole(); + const mockExit = spyExit(); + + it("does not throw with no args", async () => { + const result = parseArgs({ argv: [] }); + expect(result.workspace).toBe(undefined); + expect(result.fallback).toBe(undefined); + expect(result.task).toBe(undefined); + }); + + it("outputs help text (--help)", async () => { + parseArgs({ argv: ["--help"] }); + expect(mockExit.exit).toHaveBeenCalledWith(0); + expect(mockConsole.log).toHaveBeenCalledWith(help); + }); + + it("outputs help text (-h)", async () => { + parseArgs({ argv: ["-h"] }); + expect(mockExit.exit).toHaveBeenCalledWith(0); + expect(mockConsole.log).toHaveBeenCalledWith(help); + }); + + it("outputs version text (--version)", async () => { + parseArgs({ argv: ["--version"] }); + expect(mockExit.exit).toHaveBeenCalledWith(0); + expect(mockConsole.log).toHaveBeenCalledWith(pkg.version); + }); + + it("outputs version text (-v)", async () => { + parseArgs({ argv: ["-v"] }); + expect(mockExit.exit).toHaveBeenCalledWith(0); + expect(mockConsole.log).toHaveBeenCalledWith(pkg.version); + }); + + it("correctly finds workspace", async () => { + const result = parseArgs({ argv: ["this-workspace"] }); + expect(result.workspace).toBe("this-workspace"); + expect(result.fallback).toBe(undefined); + expect(result.task).toBe(undefined); + expect(mockExit.exit).toHaveBeenCalledTimes(0); + }); + + it("correctly finds fallback", async () => { + const result = parseArgs({ argv: ["--fallback=HEAD^"] }); + expect(result.workspace).toBe(undefined); + expect(result.fallback).toBe("HEAD^"); + expect(result.task).toBe(undefined); + expect(mockExit.exit).toHaveBeenCalledTimes(0); + }); + + it("correctly finds task", async () => { + const result = parseArgs({ argv: ["--task=some-workspace#build"] }); + expect(result.workspace).toBe(undefined); + expect(result.fallback).toBe(undefined); + expect(result.task).toBe("some-workspace#build"); + expect(mockExit.exit).toHaveBeenCalledTimes(0); + }); + + it("uses default fallback if incorrectly specified", async () => { + const result = parseArgs({ argv: ["--fallback"] }); + expect(result.workspace).toBe(undefined); + expect(result.fallback).toBe(undefined); + expect(result.task).toBe(undefined); + expect(mockExit.exit).toHaveBeenCalledTimes(0); + }); + + it("uses default fallback if empty string", async () => { + const result = parseArgs({ argv: ["--fallback="] }); + expect(result.workspace).toBe(undefined); + expect(result.fallback).toBe(undefined); + expect(result.task).toBe(undefined); + expect(mockExit.exit).toHaveBeenCalledTimes(0); + }); + + it("uses default task if incorrectly specified", async () => { + const result = parseArgs({ argv: ["--task"] }); + expect(result.workspace).toBe(undefined); + expect(result.fallback).toBe(undefined); + expect(result.task).toBe(undefined); + expect(mockExit.exit).toHaveBeenCalledTimes(0); + }); + + it("uses default task if empty string", async () => { + const result = parseArgs({ argv: ["--task="] }); + expect(result.workspace).toBe(undefined); + expect(result.fallback).toBe(undefined); + expect(result.task).toBe(undefined); + expect(mockExit.exit).toHaveBeenCalledTimes(0); + }); + + it("correctly finds fallback and workspace", async () => { + const result = parseArgs({ + argv: [ + "this-workspace", + "--fallback=HEAD~10", + "--task=some-workspace#build", + ], + }); + expect(result.workspace).toBe("this-workspace"); + expect(result.fallback).toBe("HEAD~10"); + expect(result.task).toBe("some-workspace#build"); + expect(mockExit.exit).toHaveBeenCalledTimes(0); + }); +}); |