import { describe, expect, it } from "vitest"; import { hostname, isContainerIdLike, parseCgroupContainerId } from "../src/hostInfo.js"; describe("parseCgroupContainerId", () => { it("parses a cgroup v1 docker path", () => { const data = "12:memory:/docker/9f8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b\n"; expect(parseCgroupContainerId(data)).toBe("9f8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b"); }); it("parses a cgroup v2 systemd scope", () => { const data = "0::/system.slice/docker-9f8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b.scope\n"; expect(parseCgroupContainerId(data)).toBe("9f8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b"); }); it("returns empty on a non-container host", () => { expect(parseCgroupContainerId("0::/user.slice/user-1000.slice/session-2.scope\n")).toBe(""); }); it("returns empty for empty input", () => { expect(parseCgroupContainerId("")).toBe(""); }); }); describe("isContainerIdLike", () => { it("accepts a hex id of valid length", () => { expect(isContainerIdLike("9f8b7c6d5e4f")).toBe(true); }); it("rejects short strings", () => { expect(isContainerIdLike("short")).toBe(false); }); it("rejects non-hex strings", () => { expect(isContainerIdLike("session-2")).toBe(false); }); it("rejects empty strings", () => { expect(isContainerIdLike("")).toBe(false); }); }); describe("hostname", () => { it("returns a non-empty value", () => { expect(hostname().length).toBeGreaterThan(0); }); });