36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const execFileMock = vi.hoisted(() => vi.fn());
|
|
|
|
vi.mock("node:child_process", () => ({
|
|
execFile: execFileMock,
|
|
}));
|
|
|
|
import { isSystemdUserServiceAvailable } from "./systemd.js";
|
|
|
|
describe("systemd availability", () => {
|
|
beforeEach(() => {
|
|
execFileMock.mockReset();
|
|
});
|
|
|
|
it("returns true when systemctl --user succeeds", async () => {
|
|
execFileMock.mockImplementation((_cmd, _args, _opts, cb) => {
|
|
cb(null, "", "");
|
|
});
|
|
await expect(isSystemdUserServiceAvailable()).resolves.toBe(true);
|
|
});
|
|
|
|
it("returns false when systemd user bus is unavailable", async () => {
|
|
execFileMock.mockImplementation((_cmd, _args, _opts, cb) => {
|
|
const err = new Error("Failed to connect to bus") as Error & {
|
|
stderr?: string;
|
|
code?: number;
|
|
};
|
|
err.stderr = "Failed to connect to bus";
|
|
err.code = 1;
|
|
cb(err, "", "");
|
|
});
|
|
await expect(isSystemdUserServiceAvailable()).resolves.toBe(false);
|
|
});
|
|
});
|