Files
openclaw-zero-token/daemon/systemd-unavailable.test.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

40 lines
1.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
classifySystemdUnavailableDetail,
isSystemctlMissingDetail,
isSystemdUserBusUnavailableDetail,
} from "./systemd-unavailable.js";
describe("classifySystemdUnavailableDetail", () => {
it("classifies missing systemctl details", () => {
expect(isSystemctlMissingDetail("spawn systemctl ENOENT")).toBe(true);
expect(classifySystemdUnavailableDetail("systemctl not available")).toBe("missing_systemctl");
});
it("classifies user bus/session failures", () => {
expect(
isSystemdUserBusUnavailableDetail(
"Failed to connect to user scope bus via local transport: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined",
),
).toBe(true);
expect(
classifySystemdUnavailableDetail(
"systemctl --user unavailable: Failed to connect to bus: No medium found",
),
).toBe("user_bus_unavailable");
});
it("classifies generic systemd-unavailable details", () => {
expect(
classifySystemdUnavailableDetail("System has not been booted with systemd as init system"),
).toBe("generic_unavailable");
expect(classifySystemdUnavailableDetail("not supported on this host")).toBe(
"generic_unavailable",
);
});
it("returns null for unrelated details", () => {
expect(classifySystemdUnavailableDetail("permission denied")).toBeNull();
});
});