From dd84b9d64fb98746a230cd24233ff50a562c39c9 Mon Sep 17 00:00:00 2001 From: 简律纯 Date: Fri, 28 Apr 2023 01:36:44 +0800 Subject: --- packages/turbo-ignore/__tests__/args.test.ts | 109 +++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 packages/turbo-ignore/__tests__/args.test.ts (limited to 'packages/turbo-ignore/__tests__/args.test.ts') 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); + }); +}); -- cgit v1.2.3-70-g09d2