mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-08 08:52:12 +00:00
Generate Request in HTTP Client (and Generate Requests for Controller, and the gutter icon) left the scratch file empty on Windows with "Cannot open file …\ai.l0ng.openidea/scratches/generated-requests.http": the scratch path joined the native app data directory (backslashes) with a /-separated suffix, so the opened editor could not be found by its path. Scratch paths now normalise the app data directory to the UI's /-separated form through a shared ipcPath helper, used by scratches, the HTTP client and Spring request generation. Co-authored-by: kevinh458 <[email protected]> 未在 Windows 实机验证。
25 lines
933 B
TypeScript
25 lines
933 B
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { ipcPath } from "./paths";
|
|
|
|
const raw = String.raw;
|
|
const APPDATA = raw`C:\Users\me\AppData\Roaming\ai.l0ng.openidea`;
|
|
|
|
describe("ipcPath", () => {
|
|
it("slashes Windows drive paths, plain or verbatim", () => {
|
|
expect(ipcPath(APPDATA)).toBe("C:/Users/me/AppData/Roaming/ai.l0ng.openidea");
|
|
expect(ipcPath(raw`\\?\C:\Users\me`)).toBe("C:/Users/me");
|
|
});
|
|
|
|
it("slashes network shares", () => {
|
|
expect(ipcPath(raw`\\server\share\dir`)).toBe("//server/share/dir");
|
|
expect(ipcPath(raw`\\?\UNC\server\share\dir`)).toBe("//server/share/dir");
|
|
});
|
|
|
|
it("leaves UI paths and POSIX paths alone", () => {
|
|
expect(ipcPath("C:/Users/me")).toBe("C:/Users/me");
|
|
expect(ipcPath("/home/me/notes")).toBe("/home/me/notes");
|
|
// A backslash is a legal character in a POSIX file name.
|
|
expect(ipcPath(raw`/home/me/a\b.txt`)).toBe(raw`/home/me/a\b.txt`);
|
|
});
|
|
});
|