Spaces:
Build error
Build error
| import os from "node:os"; | |
| import path from "node:path"; | |
| import { afterEach, beforeEach, describe, expect, it } from "vitest"; | |
| import { applyDataDirOverride } from "../config/data-dir.js"; | |
| const ORIGINAL_ENV = { ...process.env }; | |
| describe("applyDataDirOverride", () => { | |
| beforeEach(() => { | |
| process.env = { ...ORIGINAL_ENV }; | |
| delete process.env.PAPERCLIP_HOME; | |
| delete process.env.PAPERCLIP_CONFIG; | |
| delete process.env.PAPERCLIP_CONTEXT; | |
| delete process.env.PAPERCLIP_INSTANCE_ID; | |
| }); | |
| afterEach(() => { | |
| process.env = { ...ORIGINAL_ENV }; | |
| }); | |
| it("sets PAPERCLIP_HOME and isolated default config/context paths", () => { | |
| const home = applyDataDirOverride({ | |
| dataDir: "~/paperclip-data", | |
| config: undefined, | |
| context: undefined, | |
| }, { hasConfigOption: true, hasContextOption: true }); | |
| const expectedHome = path.resolve(os.homedir(), "paperclip-data"); | |
| expect(home).toBe(expectedHome); | |
| expect(process.env.PAPERCLIP_HOME).toBe(expectedHome); | |
| expect(process.env.PAPERCLIP_CONFIG).toBe( | |
| path.resolve(expectedHome, "instances", "default", "config.json"), | |
| ); | |
| expect(process.env.PAPERCLIP_CONTEXT).toBe(path.resolve(expectedHome, "context.json")); | |
| expect(process.env.PAPERCLIP_INSTANCE_ID).toBe("default"); | |
| }); | |
| it("uses the provided instance id when deriving default config path", () => { | |
| const home = applyDataDirOverride({ | |
| dataDir: "/tmp/paperclip-alt", | |
| instance: "dev_1", | |
| config: undefined, | |
| context: undefined, | |
| }, { hasConfigOption: true, hasContextOption: true }); | |
| expect(home).toBe(path.resolve("/tmp/paperclip-alt")); | |
| expect(process.env.PAPERCLIP_INSTANCE_ID).toBe("dev_1"); | |
| expect(process.env.PAPERCLIP_CONFIG).toBe( | |
| path.resolve("/tmp/paperclip-alt", "instances", "dev_1", "config.json"), | |
| ); | |
| }); | |
| it("does not override explicit config/context settings", () => { | |
| process.env.PAPERCLIP_CONFIG = "/env/config.json"; | |
| process.env.PAPERCLIP_CONTEXT = "/env/context.json"; | |
| applyDataDirOverride({ | |
| dataDir: "/tmp/paperclip-alt", | |
| config: "/flag/config.json", | |
| context: "/flag/context.json", | |
| }, { hasConfigOption: true, hasContextOption: true }); | |
| expect(process.env.PAPERCLIP_CONFIG).toBe("/env/config.json"); | |
| expect(process.env.PAPERCLIP_CONTEXT).toBe("/env/context.json"); | |
| }); | |
| it("only applies defaults for options supported by the command", () => { | |
| applyDataDirOverride( | |
| { | |
| dataDir: "/tmp/paperclip-alt", | |
| }, | |
| { hasConfigOption: false, hasContextOption: false }, | |
| ); | |
| expect(process.env.PAPERCLIP_HOME).toBe(path.resolve("/tmp/paperclip-alt")); | |
| expect(process.env.PAPERCLIP_CONFIG).toBeUndefined(); | |
| expect(process.env.PAPERCLIP_CONTEXT).toBeUndefined(); | |
| }); | |
| }); | |