Files
2026-07-13 13:39:12 +08:00

56 lines
2.3 KiB
TypeScript

import { describe, it } from "node:test";
import assert from "node:assert/strict";
import { pathToFileURL } from "node:url";
import { join } from "node:path";
import { platform } from "node:os";
describe("bin/omniroute.mjs MCP path handling", () => {
it("pathToFileURL converts Windows paths to valid file:// URLs", () => {
if (platform() !== "win32") {
// Skip on non-Windows platforms
return;
}
const testPath = "C:\\Users\\test\\projects\\OmniRoute\\bin\\mcp-server.mjs";
const fileUrl = pathToFileURL(testPath);
assert.ok(fileUrl.href.startsWith("file:///"), "URL should start with file:///");
assert.ok(fileUrl.href.includes("C:/"), "Windows drive letter should be converted");
assert.ok(!fileUrl.href.includes("\\"), "Backslashes should be converted to forward slashes");
assert.ok(fileUrl.href.endsWith("mcp-server.mjs"), "Filename should be preserved");
});
it("pathToFileURL converts Unix paths to valid file:// URLs", () => {
if (platform() === "win32") {
// Skip on Windows
return;
}
const testPath = "/home/user/projects/OmniRoute/bin/mcp-server.mjs";
const fileUrl = pathToFileURL(testPath);
assert.ok(fileUrl.href.startsWith("file:///"), "URL should start with file:///");
assert.ok(fileUrl.href.endsWith("mcp-server.mjs"), "Filename should be preserved");
});
it("pathToFileURL handles relative paths correctly", () => {
const relativePath = join("bin", "mcp-server.mjs");
const absolutePath = join(process.cwd(), relativePath);
const fileUrl = pathToFileURL(absolutePath);
assert.ok(fileUrl.href.startsWith("file:///"), "URL should start with file:///");
assert.ok(fileUrl.href.endsWith("mcp-server.mjs"), "Filename should be preserved");
});
it("pathToFileURL result can be used with dynamic import", async () => {
// This test verifies that the URL format is compatible with import()
const testPath = join(process.cwd(), "package.json");
const fileUrl = pathToFileURL(testPath);
// Verify the URL is valid for import (we use a JSON file as a safe test)
assert.ok(fileUrl.href.startsWith("file:///"), "URL should be valid for import");
const parsedUrl = new URL(fileUrl.href);
assert.equal(parsedUrl.protocol, "file:", "URL should be parseable");
});
});