97 lines
3.0 KiB
TypeScript
97 lines
3.0 KiB
TypeScript
import { platform } from "os";
|
|
import type { BaseLogger } from "../../../src/common/logging";
|
|
import { expandShortPaths } from "../../../src/common/short-paths";
|
|
import { join } from "path";
|
|
|
|
describe("expandShortPaths", () => {
|
|
let logger: BaseLogger;
|
|
|
|
beforeEach(() => {
|
|
logger = {
|
|
log: jest.fn(),
|
|
};
|
|
});
|
|
|
|
describe("on POSIX", () => {
|
|
if (platform() === "win32") {
|
|
console.log(`Skipping test on Windows`);
|
|
return;
|
|
}
|
|
|
|
it("should return the same path for non-Windows platforms", async () => {
|
|
const path = "/home/user/some~path";
|
|
const result = await expandShortPaths(path, logger);
|
|
|
|
expect(logger.log).not.toHaveBeenCalled();
|
|
expect(result).toBe(path);
|
|
});
|
|
});
|
|
|
|
describe("on Windows", () => {
|
|
if (platform() !== "win32") {
|
|
console.log(`Skipping test on non-Windows`);
|
|
return;
|
|
}
|
|
|
|
it("should return the same path if no short components", async () => {
|
|
const path = "C:\\Program Files\\Some Folder";
|
|
const result = await expandShortPaths(path, logger);
|
|
|
|
expect(logger.log).toHaveBeenCalledWith(
|
|
`Expanding short paths in: ${path}`,
|
|
);
|
|
expect(logger.log).toHaveBeenCalledWith(
|
|
"Skipping due to no short components",
|
|
);
|
|
expect(result).toBe(path);
|
|
});
|
|
|
|
it("should not attempt to expand long paths with '~' in the name", async () => {
|
|
const testDir = join(__dirname, "../data/short-paths");
|
|
const path = join(testDir, "textfile-with~tilde.txt");
|
|
const result = await expandShortPaths(path, logger);
|
|
|
|
expect(logger.log).toHaveBeenCalledWith(
|
|
`Expanding short paths in: ${path}`,
|
|
);
|
|
expect(logger.log).toHaveBeenCalledWith(
|
|
`Expanding short path component: textfile-with~tilde.txt`,
|
|
);
|
|
expect(logger.log).toHaveBeenCalledWith(`Component is not a short name`);
|
|
expect(result).toBe(join(testDir, "textfile-with~tilde.txt"));
|
|
});
|
|
|
|
it("should expand a short path", async () => {
|
|
const path = "C:\\PROGRA~1\\Some Folder";
|
|
const result = await expandShortPaths(path, logger);
|
|
|
|
expect(logger.log).toHaveBeenCalledWith(
|
|
`Expanding short paths in: ${path}`,
|
|
);
|
|
expect(logger.log).toHaveBeenCalledWith(
|
|
`Expanding short path component: PROGRA~1`,
|
|
);
|
|
expect(result).toBe("C:\\Program Files\\Some Folder");
|
|
});
|
|
|
|
it("should expand multiple short paths", async () => {
|
|
const testDir = join(__dirname, "../data/short-paths");
|
|
const path = join(testDir, "FOLDER~1", "TEXTFI~1.TXT");
|
|
const result = await expandShortPaths(path, logger);
|
|
|
|
expect(logger.log).toHaveBeenCalledWith(
|
|
`Expanding short paths in: ${path}`,
|
|
);
|
|
expect(logger.log).toHaveBeenCalledWith(
|
|
`Expanding short path component: FOLDER~1`,
|
|
);
|
|
expect(logger.log).toHaveBeenCalledWith(
|
|
`Expanding short path component: TEXTFI~1.TXT`,
|
|
);
|
|
expect(result).toBe(
|
|
join(testDir, "folder with space", ".textfile+extra.characters.txt"),
|
|
);
|
|
});
|
|
});
|
|
});
|