multica/packages/utils/src/paths.test.ts
Jiayuan Zhang 40fb94e3c3 feat(utils): add SMC_DATA_DIR env var to override root data directory
Allows isolating dev and prod data by setting SMC_DATA_DIR (e.g.
~/.super-multica-dev). Also fixes cron/store.ts which bypassed
DATA_DIR with a hardcoded path.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 00:39:13 +08:00

37 lines
1 KiB
TypeScript

import { describe, it, expect, afterEach } from "vitest";
import { join } from "node:path";
import { homedir } from "node:os";
import { resolveDataDir } from "./paths.js";
describe("resolveDataDir", () => {
const original = process.env.SMC_DATA_DIR;
afterEach(() => {
if (original === undefined) {
delete process.env.SMC_DATA_DIR;
} else {
process.env.SMC_DATA_DIR = original;
}
});
it("defaults to ~/.super-multica when SMC_DATA_DIR is not set", () => {
delete process.env.SMC_DATA_DIR;
expect(resolveDataDir()).toBe(join(homedir(), ".super-multica"));
});
it("uses absolute path from SMC_DATA_DIR", () => {
process.env.SMC_DATA_DIR = "/tmp/test-multica";
expect(resolveDataDir()).toBe("/tmp/test-multica");
});
it("expands ~ in SMC_DATA_DIR", () => {
process.env.SMC_DATA_DIR = "~/.super-multica-dev";
expect(resolveDataDir()).toBe(join(homedir(), ".super-multica-dev"));
});
it("handles ~ alone", () => {
process.env.SMC_DATA_DIR = "~";
expect(resolveDataDir()).toBe(homedir());
});
});