chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
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");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user