Files
wehub-resource-sync 979fb22d7c
CI / test (20, macos-latest) (push) Waiting to run
CI / test (20, ubuntu-latest) (push) Waiting to run
CI / test (22, macos-latest) (push) Waiting to run
CI / test (22, ubuntu-latest) (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:01:18 +08:00

67 lines
2.2 KiB
TypeScript

import { describe, it, expect, beforeEach, afterEach } from "vitest";
import { mkdtempSync, rmSync } from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { resolveProject } from "../src/hooks/_project.js";
describe("resolveProject — hook project basename resolver", () => {
const originalEnv = process.env.AGENTMEMORY_PROJECT_NAME;
beforeEach(() => {
delete process.env.AGENTMEMORY_PROJECT_NAME;
});
afterEach(() => {
if (originalEnv === undefined) {
delete process.env.AGENTMEMORY_PROJECT_NAME;
} else {
process.env.AGENTMEMORY_PROJECT_NAME = originalEnv;
}
});
it("AGENTMEMORY_PROJECT_NAME env wins over everything", () => {
process.env.AGENTMEMORY_PROJECT_NAME = "my-override";
expect(resolveProject("/var/log")).toBe("my-override");
expect(resolveProject(process.cwd())).toBe("my-override");
});
it("trims whitespace on env override", () => {
process.env.AGENTMEMORY_PROJECT_NAME = " spaced ";
expect(resolveProject("/var/log")).toBe("spaced");
});
it("ignores empty env override", () => {
process.env.AGENTMEMORY_PROJECT_NAME = " ";
const repoBasename = "agentmemory";
expect(resolveProject(process.cwd())).toBe(repoBasename);
});
it("returns git toplevel basename when cwd is inside a repo", () => {
const top = resolveProject(process.cwd());
expect(top).toBe("agentmemory");
});
it("returns git toplevel basename from a nested subdir", () => {
const nested = join(process.cwd(), "src", "hooks");
expect(resolveProject(nested)).toBe("agentmemory");
});
it("falls back to basename(cwd) when not in a git repo", () => {
const dir = mkdtempSync(join(tmpdir(), "amem-noproj-"));
try {
expect(resolveProject(dir)).toBe(dir.split("/").pop());
} finally {
rmSync(dir, { recursive: true, force: true });
}
});
it("defaults to process.cwd() when no cwd argument given", () => {
expect(resolveProject()).toBe("agentmemory");
});
it("defaults to process.cwd() when cwd argument is empty", () => {
expect(resolveProject("")).toBe("agentmemory");
expect(resolveProject(" ")).toBe("agentmemory");
});
});