65 lines
2.2 KiB
TypeScript
65 lines
2.2 KiB
TypeScript
import path from "node:path";
|
|
|
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
import { resolveDevBackendEnv } from "./dev";
|
|
|
|
describe("resolveDevBackendEnv", () => {
|
|
const originalTaskId = process.env.KANDEV_TASK_ID;
|
|
const originalDbPath = process.env.KANDEV_DATABASE_PATH;
|
|
const originalMock = process.env.KANDEV_MOCK_AGENT;
|
|
|
|
beforeEach(() => {
|
|
delete process.env.KANDEV_TASK_ID;
|
|
delete process.env.KANDEV_DATABASE_PATH;
|
|
delete process.env.KANDEV_MOCK_AGENT;
|
|
vi.spyOn(console, "log").mockImplementation(() => {});
|
|
});
|
|
|
|
afterEach(() => {
|
|
restoreEnv("KANDEV_TASK_ID", originalTaskId);
|
|
restoreEnv("KANDEV_DATABASE_PATH", originalDbPath);
|
|
restoreEnv("KANDEV_MOCK_AGENT", originalMock);
|
|
vi.restoreAllMocks();
|
|
});
|
|
|
|
it("defaults to <repo>/.kandev-dev/data/kandev.db in a plain shell", () => {
|
|
const repoRoot = "/tmp/repo";
|
|
const { dbPath, extra } = resolveDevBackendEnv(repoRoot);
|
|
|
|
expect(dbPath).toBe(path.join(repoRoot, ".kandev-dev", "data", "kandev.db"));
|
|
expect(extra.KANDEV_HOME_DIR).toBe(path.join(repoRoot, ".kandev-dev"));
|
|
expect(extra.KANDEV_DATABASE_PATH).toBe("");
|
|
});
|
|
|
|
it("honors an explicit KANDEV_DATABASE_PATH override in a plain shell", () => {
|
|
process.env.KANDEV_DATABASE_PATH = "/tmp/custom.db";
|
|
|
|
const { dbPath, extra } = resolveDevBackendEnv("/tmp/repo");
|
|
|
|
expect(dbPath).toBe("/tmp/custom.db");
|
|
expect(extra.KANDEV_DATABASE_PATH).toBe("/tmp/custom.db");
|
|
expect(extra.KANDEV_HOME_DIR).toBeUndefined();
|
|
});
|
|
|
|
it("ignores a leaked KANDEV_DATABASE_PATH when running inside a kandev task", () => {
|
|
process.env.KANDEV_TASK_ID = "fake-task-id";
|
|
process.env.KANDEV_DATABASE_PATH = "/parent/kandev.db";
|
|
const repoRoot = "/tmp/repo";
|
|
|
|
const { dbPath, extra } = resolveDevBackendEnv(repoRoot);
|
|
|
|
expect(dbPath).toBe(path.join(repoRoot, ".kandev-dev", "data", "kandev.db"));
|
|
expect(extra.KANDEV_HOME_DIR).toBe(path.join(repoRoot, ".kandev-dev"));
|
|
expect(extra.KANDEV_DATABASE_PATH).toBe("");
|
|
});
|
|
});
|
|
|
|
function restoreEnv(name: string, value: string | undefined): void {
|
|
if (value === undefined) {
|
|
delete process.env[name];
|
|
} else {
|
|
process.env[name] = value;
|
|
}
|
|
}
|