rea/tests/composition/hopperConfig.test.ts

39 lines
1.2 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
defaultHopperLauncherPath,
parseConfig,
} from "../../src/config/parseConfig.js";
describe("Hopper launcher defaults", () => {
it("prefers an executable system Hopper on Linux", () => {
const executable = (path: string) => path === "/opt/hopper/bin/Hopper";
expect(defaultHopperLauncherPath("linux", "/home/test", executable)).toBe(
"/opt/hopper/bin/Hopper",
);
});
it("falls back to the legacy user-local Hopper on Linux", () => {
const executable = (path: string) =>
path === "/home/test/.local/share/rea/hopper/bin/Hopper";
expect(defaultHopperLauncherPath("linux", "/home/test", executable)).toBe(
"/home/test/.local/share/rea/hopper/bin/Hopper",
);
});
it("keeps the system path as the diagnostic fallback when neither exists", () => {
expect(defaultHopperLauncherPath("linux", "/home/test", () => false)).toBe(
"/opt/hopper/bin/Hopper",
);
});
it("keeps explicit HOPPER_LAUNCHER_PATH authoritative", () => {
const parsed = parseConfig({
HOPPER_LAUNCHER_PATH: "/custom/Hopper",
});
expect(parsed.ok).toBe(true);
if (parsed.ok)
expect(parsed.value.hopperLauncherPath).toBe("/custom/Hopper");
});
});