37 lines
1.5 KiB
JavaScript
37 lines
1.5 KiB
JavaScript
import { test } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
import {
|
|
addMcpServerToConfigFile,
|
|
mcpConfigJson,
|
|
mcpServerConfig,
|
|
} from "../out/agent/setup.js";
|
|
|
|
test("mcpServerConfig and mcpConfigJson use the stable launcher", () => {
|
|
const config = mcpServerConfig("C:/Users/me/.ra3modxml/ra3-mod-xml-mcp.cmd", "D:/Mods/Example");
|
|
assert.deepEqual(config.mcpServers["ra3-mod-xml"].args, ["--project", "D:/Mods/Example"]);
|
|
const json = mcpConfigJson("C:/launcher.cmd", "D:/Proj");
|
|
assert.ok(json.includes("C:/launcher.cmd"));
|
|
assert.ok(json.includes("D:/Proj"));
|
|
});
|
|
|
|
test("addMcpServerToConfigFile creates and merges config", async () => {
|
|
const dir = mkdtempSync(join(tmpdir(), "ra3-setup-test-"));
|
|
try {
|
|
const file = join(dir, "mcp.json");
|
|
await addMcpServerToConfigFile(file, "C:/launcher.cmd", "D:/Proj");
|
|
const first = JSON.parse(readFileSync(file, "utf8"));
|
|
assert.ok(first.mcpServers["ra3-mod-xml"]);
|
|
|
|
writeFileSync(file, JSON.stringify({ mcpServers: { other: { command: "x" } } }, null, 2));
|
|
await addMcpServerToConfigFile(file, "C:/launcher.cmd", "D:/Proj");
|
|
const merged = JSON.parse(readFileSync(file, "utf8"));
|
|
assert.ok(merged.mcpServers.other);
|
|
assert.ok(merged.mcpServers["ra3-mod-xml"]);
|
|
} finally {
|
|
rmSync(dir, { recursive: true, force: true });
|
|
}
|
|
});
|