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); }); });