File size: 1,856 Bytes
fc93158 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
const loadConfigMock = vi.fn();
vi.mock("../config/config.js", () => ({
loadConfig: loadConfigMock,
}));
let formatCliBannerLine: typeof import("./banner.js").formatCliBannerLine;
beforeAll(async () => {
({ formatCliBannerLine } = await import("./banner.js"));
});
beforeEach(() => {
loadConfigMock.mockReset();
loadConfigMock.mockReturnValue({});
});
describe("formatCliBannerLine", () => {
it("hides tagline text when cli.banner.taglineMode is off", () => {
loadConfigMock.mockReturnValue({
cli: { banner: { taglineMode: "off" } },
});
const line = formatCliBannerLine("2026.3.7", {
commit: "abc1234",
richTty: false,
columns: 240,
});
expect(line).toBe("🤖 OpenSkynet 2026.3.7 (abc1234)");
});
it("uses default tagline when cli.banner.taglineMode is default", () => {
loadConfigMock.mockReturnValue({
cli: { banner: { taglineMode: "default" } },
});
const line = formatCliBannerLine("2026.3.7", {
commit: "abc1234",
richTty: false,
});
expect(line).toContain("🤖 OpenSkynet 2026.3.7 (abc1234)");
expect(line).toContain(
"Tip: openskynet configure interactive setup for credentials, channels, gateway, and agent defaults",
);
});
it("prefers explicit tagline mode over config", () => {
loadConfigMock.mockReturnValue({
cli: { banner: { taglineMode: "off" } },
});
const line = formatCliBannerLine("2026.3.7", {
commit: "abc1234",
richTty: false,
mode: "default",
columns: 240,
});
expect(line).toContain("🤖 OpenSkynet 2026.3.7 (abc1234)");
expect(line).toContain(
"Tip: openskynet configure interactive setup for credentials, channels, gateway, and agent defaults",
);
});
});
|