UNPKG

multi-clasp2

Version:

Google Clasp wrapper to push changes to multiple Apps Script projects at once.

55 lines (54 loc) 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const multiClaspMocks_1 = require("./_mocks/multiClaspMocks"); const push_1 = tslib_1.__importDefault(require("../src/push")); describe("multi-clasp push -> execShellCommand", () => { const realArgv = process.argv.slice(); beforeEach(() => { process.argv = ["node", "multi-clasp", "push"]; multiClaspMocks_1.foreachMock.mockReset(); multiClaspMocks_1.execMock.mockReset(); }); afterEach(() => { process.argv = realArgv; }); it("no options: executes npx clasp push", async () => { const tasks = (0, multiClaspMocks_1.mockForeach)(["AAA", "BBB"]); multiClaspMocks_1.execMock.mockResolvedValue({ error: null, stdout: "ok", stderr: "" }); await (0, push_1.default)({ retry: "1" }); await Promise.all(tasks); expect(multiClaspMocks_1.execMock).toHaveBeenCalledTimes(2); expect(multiClaspMocks_1.execMock.mock.calls[0][0]).toBe("npx clasp push "); expect(multiClaspMocks_1.execMock.mock.calls[1][0]).toBe("npx clasp push "); }); it("--force: executes npx clasp push --force", async () => { const tasks = (0, multiClaspMocks_1.mockForeach)(["AAA", "BBB"]); multiClaspMocks_1.execMock.mockResolvedValue({ error: null, stdout: "ok", stderr: "" }); await (0, push_1.default)({ retry: "1", force: true }); await Promise.all(tasks); expect(multiClaspMocks_1.execMock).toHaveBeenCalledTimes(2); expect(multiClaspMocks_1.execMock.mock.calls[0][0]).toBe("npx clasp push --force"); expect(multiClaspMocks_1.execMock.mock.calls[1][0]).toBe("npx clasp push --force"); }); it("retry: fails once then succeeds", async () => { const tasks = (0, multiClaspMocks_1.mockForeach)(["AAA"]); multiClaspMocks_1.execMock .mockResolvedValueOnce({ error: new Error("boom"), stdout: "", stderr: "fail" }) .mockResolvedValueOnce({ error: null, stdout: "ok", stderr: "" }); await (0, push_1.default)({ retry: "2" }); await Promise.all(tasks); expect(multiClaspMocks_1.execMock).toHaveBeenCalledTimes(2); expect(multiClaspMocks_1.execMock.mock.calls[0][0]).toBe("npx clasp push "); expect(multiClaspMocks_1.execMock.mock.calls[1][0]).toBe("npx clasp push "); }); it("retry: exits(1) if all retries fail", async () => { const tasks = (0, multiClaspMocks_1.mockForeach)(["AAA"]); const exitSpy = jest.spyOn(process, "exit").mockImplementation((() => undefined)); multiClaspMocks_1.execMock.mockResolvedValue({ error: new Error("boom"), stdout: "", stderr: "fail" }); await (0, push_1.default)({ retry: "2" }); await Promise.all(tasks); expect(exitSpy).toHaveBeenCalledWith(1); exitSpy.mockRestore(); }); });