39 lines
1.2 KiB
TypeScript
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");
|
|
});
|
|
});
|