aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/turbo-ignore/__tests__/args.test.ts
diff options
context:
space:
mode:
author简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:44 +0800
committer简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:44 +0800
commitdd84b9d64fb98746a230cd24233ff50a562c39c9 (patch)
treeb583261ef00b3afe72ec4d6dacb31e57779a6faf /packages/turbo-ignore/__tests__/args.test.ts
parent0b46fcd72ac34382387b2bcf9095233efbcc52f4 (diff)
downloadHydroRoll-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.ts109
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);
+ });
+});