56 lines
2.3 KiB
TypeScript
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");
|
|
});
|
|
});
|