| import { beforeEach, describe, expect, it, vi } from "vitest"; |
|
|
| const runCommandWithTimeout = vi.hoisted(() => vi.fn()); |
|
|
| vi.mock("../process/exec.js", () => ({ |
| runCommandWithTimeout: (...args: unknown[]) => runCommandWithTimeout(...args), |
| })); |
|
|
| const { execSchtasks } = await import("./schtasks-exec.js"); |
|
|
| beforeEach(() => { |
| runCommandWithTimeout.mockReset(); |
| }); |
|
|
| describe("execSchtasks", () => { |
| it("runs schtasks with bounded timeouts", async () => { |
| runCommandWithTimeout.mockResolvedValue({ |
| stdout: "ok", |
| stderr: "", |
| code: 0, |
| signal: null, |
| killed: false, |
| termination: "exit", |
| }); |
|
|
| await expect(execSchtasks(["/Query"])).resolves.toEqual({ |
| stdout: "ok", |
| stderr: "", |
| code: 0, |
| }); |
| expect(runCommandWithTimeout).toHaveBeenCalledWith(["schtasks", "/Query"], { |
| timeoutMs: 15_000, |
| noOutputTimeoutMs: 5_000, |
| }); |
| }); |
|
|
| it("maps a timeout into a non-zero schtasks result", async () => { |
| runCommandWithTimeout.mockResolvedValue({ |
| stdout: "", |
| stderr: "", |
| code: null, |
| signal: "SIGTERM", |
| killed: true, |
| termination: "timeout", |
| }); |
|
|
| await expect(execSchtasks(["/Create"])).resolves.toEqual({ |
| stdout: "", |
| stderr: "schtasks timed out after 15000ms", |
| code: 124, |
| }); |
| }); |
| }); |
|
|