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__/checkCommit.test.ts | |
| parent | 0b46fcd72ac34382387b2bcf9095233efbcc52f4 (diff) | |
| download | HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.tar.gz HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.zip | |
Diffstat (limited to 'packages/turbo-ignore/__tests__/checkCommit.test.ts')
| -rw-r--r-- | packages/turbo-ignore/__tests__/checkCommit.test.ts | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/packages/turbo-ignore/__tests__/checkCommit.test.ts b/packages/turbo-ignore/__tests__/checkCommit.test.ts new file mode 100644 index 0000000..e7e4a5f --- /dev/null +++ b/packages/turbo-ignore/__tests__/checkCommit.test.ts @@ -0,0 +1,229 @@ +import child_process from "child_process"; +import { checkCommit } from "../src/checkCommit"; +import { mockEnv } from "@turbo/test-utils"; + +describe("checkCommit()", () => { + describe("on Vercel", () => { + mockEnv(); + + describe("for all workspaces", () => { + it("results in continue when no special commit messages are found", async () => { + process.env.VERCEL = "1"; + process.env.VERCEL_GIT_COMMIT_MESSAGE = "fixing a test"; + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "continue", + scope: "global", + reason: "No deploy or skip string found in commit message.", + }); + }); + + it("results in conflict when deploy and skip commit messages are found", async () => { + process.env.VERCEL = "1"; + process.env.VERCEL_GIT_COMMIT_MESSAGE = + "deploying [vercel deploy] and skipping [vercel skip]"; + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "conflict", + scope: "global", + reason: + "Conflicting commit messages found: [vercel deploy] and [vercel skip]", + }); + }); + + it("results in deploy when deploy commit message is found", async () => { + process.env.VERCEL = "1"; + process.env.VERCEL_GIT_COMMIT_MESSAGE = "deploying [vercel deploy]"; + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "deploy", + scope: "global", + reason: "Found commit message: [vercel deploy]", + }); + }); + + it("results in skip when skip commit message is found", async () => { + process.env.VERCEL = "1"; + process.env.VERCEL_GIT_COMMIT_MESSAGE = "skip deployment [vercel skip]"; + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "skip", + scope: "global", + reason: "Found commit message: [vercel skip]", + }); + }); + }); + + describe("for specific workspaces", () => { + it("results in continue when no special commit messages are found", async () => { + process.env.VERCEL = "1"; + process.env.VERCEL_GIT_COMMIT_MESSAGE = + "fixing a test in test-workspace"; + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "continue", + scope: "global", + reason: "No deploy or skip string found in commit message.", + }); + }); + + it("results in conflict when deploy and skip commit messages are found", async () => { + process.env.VERCEL = "1"; + process.env.VERCEL_GIT_COMMIT_MESSAGE = + "deploying [vercel deploy test-workspace] and skipping [vercel skip test-workspace]"; + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "conflict", + scope: "workspace", + reason: + "Conflicting commit messages found: [vercel deploy test-workspace] and [vercel skip test-workspace]", + }); + }); + + it("results in deploy when deploy commit message is found", async () => { + process.env.VERCEL = "1"; + process.env.VERCEL_GIT_COMMIT_MESSAGE = + "deploying [vercel deploy test-workspace]"; + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "deploy", + scope: "workspace", + reason: "Found commit message: [vercel deploy test-workspace]", + }); + }); + + it("results in skip when skip commit message is found", async () => { + process.env.VERCEL = "1"; + process.env.VERCEL_GIT_COMMIT_MESSAGE = + "skip deployment [vercel skip test-workspace]"; + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "skip", + scope: "workspace", + reason: "Found commit message: [vercel skip test-workspace]", + }); + }); + }); + }); + describe("Not on Vercel", () => { + describe("for all workspaces", () => { + it("results in continue when no special commit messages are found", async () => { + const commitBody = "fixing a test"; + const mockExecSync = jest + .spyOn(child_process, "execSync") + .mockImplementation((_) => commitBody); + + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "continue", + scope: "global", + reason: "No deploy or skip string found in commit message.", + }); + expect(mockExecSync).toHaveBeenCalledWith("git show -s --format=%B"); + mockExecSync.mockRestore(); + }); + + it("results in conflict when deploy and skip commit messages are found", async () => { + const commitBody = + "deploying [vercel deploy] and skipping [vercel skip]"; + const mockExecSync = jest + .spyOn(child_process, "execSync") + .mockImplementation((_) => commitBody); + + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "conflict", + scope: "global", + reason: + "Conflicting commit messages found: [vercel deploy] and [vercel skip]", + }); + expect(mockExecSync).toHaveBeenCalledWith("git show -s --format=%B"); + mockExecSync.mockRestore(); + }); + + it("results in deploy when deploy commit message is found", async () => { + const commitBody = "deploying [vercel deploy]"; + const mockExecSync = jest + .spyOn(child_process, "execSync") + .mockImplementation((_) => commitBody); + + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "deploy", + scope: "global", + reason: "Found commit message: [vercel deploy]", + }); + expect(mockExecSync).toHaveBeenCalledWith("git show -s --format=%B"); + mockExecSync.mockRestore(); + }); + + it("results in skip when skip commit message is found", async () => { + const commitBody = "skip deployment [vercel skip]"; + const mockExecSync = jest + .spyOn(child_process, "execSync") + .mockImplementation((_) => commitBody); + + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "skip", + scope: "global", + reason: "Found commit message: [vercel skip]", + }); + expect(mockExecSync).toHaveBeenCalledWith("git show -s --format=%B"); + mockExecSync.mockRestore(); + }); + }); + + describe("for specific workspaces", () => { + it("results in continue when no special commit messages are found", async () => { + const commitBody = "fixing a test in test-workspace"; + const mockExecSync = jest + .spyOn(child_process, "execSync") + .mockImplementation((_) => commitBody); + + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "continue", + scope: "global", + reason: "No deploy or skip string found in commit message.", + }); + expect(mockExecSync).toHaveBeenCalledWith("git show -s --format=%B"); + mockExecSync.mockRestore(); + }); + + it("results in conflict when deploy and skip commit messages are found", async () => { + const commitBody = + "deploying [vercel deploy test-workspace] and skipping [vercel skip test-workspace]"; + const mockExecSync = jest + .spyOn(child_process, "execSync") + .mockImplementation((_) => commitBody); + + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "conflict", + scope: "workspace", + reason: + "Conflicting commit messages found: [vercel deploy test-workspace] and [vercel skip test-workspace]", + }); + expect(mockExecSync).toHaveBeenCalledWith("git show -s --format=%B"); + mockExecSync.mockRestore(); + }); + + it("results in deploy when deploy commit message is found", async () => { + const commitBody = "deploying [vercel deploy test-workspace]"; + const mockExecSync = jest + .spyOn(child_process, "execSync") + .mockImplementation((_) => commitBody); + + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "deploy", + scope: "workspace", + reason: "Found commit message: [vercel deploy test-workspace]", + }); + expect(mockExecSync).toHaveBeenCalledWith("git show -s --format=%B"); + mockExecSync.mockRestore(); + }); + + it("results in skip when skip commit message is found", async () => { + const commitBody = "skip deployment [vercel skip test-workspace]"; + const mockExecSync = jest + .spyOn(child_process, "execSync") + .mockImplementation((_) => commitBody); + + expect(checkCommit({ workspace: "test-workspace" })).toEqual({ + result: "skip", + scope: "workspace", + reason: "Found commit message: [vercel skip test-workspace]", + }); + expect(mockExecSync).toHaveBeenCalledWith("git show -s --format=%B"); + mockExecSync.mockRestore(); + }); + }); + }); +}); |