fix(test): use path.resolve for cross-platform Windows compatibility

This commit is contained in:
Xinhua Gu
2026-02-16 12:54:07 +01:00
committed by Peter Steinberger
parent 90774c098a
commit 3c3a39d165

View File

@@ -471,15 +471,17 @@ describe("sessions", () => {
it("resolves cross-agent absolute sessionFile paths", () => {
const prev = process.env.OPENCLAW_STATE_DIR;
process.env.OPENCLAW_STATE_DIR = "/home/user/.openclaw";
const stateDir = path.resolve("/home/user/.openclaw");
process.env.OPENCLAW_STATE_DIR = stateDir;
try {
const bot2Session = path.join(stateDir, "agents", "bot2", "sessions", "sess-1.jsonl");
// Agent bot1 resolves a sessionFile that belongs to agent bot2
const sessionFile = resolveSessionFilePath(
"sess-1",
{ sessionFile: "/home/user/.openclaw/agents/bot2/sessions/sess-1.jsonl" },
{ sessionFile: bot2Session },
{ agentId: "bot1" },
);
expect(sessionFile).toBe("/home/user/.openclaw/agents/bot2/sessions/sess-1.jsonl");
expect(sessionFile).toBe(bot2Session);
} finally {
if (prev === undefined) {
delete process.env.OPENCLAW_STATE_DIR;
@@ -491,15 +493,17 @@ describe("sessions", () => {
it("resolves cross-agent paths when OPENCLAW_STATE_DIR differs from stored paths", () => {
const prev = process.env.OPENCLAW_STATE_DIR;
process.env.OPENCLAW_STATE_DIR = "/different/state";
process.env.OPENCLAW_STATE_DIR = path.resolve("/different/state");
try {
const originalBase = path.resolve("/original/state");
const bot2Session = path.join(originalBase, "agents", "bot2", "sessions", "sess-1.jsonl");
// sessionFile was created under a different state dir than current env
const sessionFile = resolveSessionFilePath(
"sess-1",
{ sessionFile: "/original/state/agents/bot2/sessions/sess-1.jsonl" },
{ sessionFile: bot2Session },
{ agentId: "bot1" },
);
expect(sessionFile).toBe("/original/state/agents/bot2/sessions/sess-1.jsonl");
expect(sessionFile).toBe(bot2Session);
} finally {
if (prev === undefined) {
delete process.env.OPENCLAW_STATE_DIR;
@@ -511,10 +515,14 @@ describe("sessions", () => {
it("rejects absolute sessionFile paths outside agent sessions directories", () => {
const prev = process.env.OPENCLAW_STATE_DIR;
process.env.OPENCLAW_STATE_DIR = "/home/user/.openclaw";
process.env.OPENCLAW_STATE_DIR = path.resolve("/home/user/.openclaw");
try {
expect(() =>
resolveSessionFilePath("sess-1", { sessionFile: "/etc/passwd" }, { agentId: "bot1" }),
resolveSessionFilePath(
"sess-1",
{ sessionFile: path.resolve("/etc/passwd") },
{ agentId: "bot1" },
),
).toThrow(/within sessions directory/);
} finally {
if (prev === undefined) {