源码快照 @ 2026-09-02 (source-only, 剔除非源码素材)
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import { expect } from "vitest";
|
||||
import { mkdtempSync, readFileSync, rmSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { dirname, join, resolve } from "node:path";
|
||||
import { fileURLToPath, pathToFileURL } from "node:url";
|
||||
import { spawnSync } from "node:child_process";
|
||||
import { test } from "@openwork/testkit";
|
||||
|
||||
const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), "../..");
|
||||
|
||||
test("the packaged Desktop runtime can load MCP validation and SSE transport", async () => {
|
||||
const root = mkdtempSync(join(tmpdir(), "openwork-mcp-validation-"));
|
||||
try {
|
||||
const nodeModules = join(root, "node_modules");
|
||||
const prepare = spawnSync(process.execPath, [
|
||||
resolve(repoRoot, "apps/desktop/scripts/prepare-runtime-node-modules.mjs"),
|
||||
"--outdir",
|
||||
nodeModules,
|
||||
], { encoding: "utf8" });
|
||||
expect(prepare.status, prepare.stderr).toBe(0);
|
||||
|
||||
const sdkRoot = join(nodeModules, "@modelcontextprotocol", "sdk");
|
||||
const provider = await import(`${pathToFileURL(join(sdkRoot, "dist", "esm", "validation", "ajv-provider.js")).href}?test=${Date.now()}`);
|
||||
const validator = new provider.AjvJsonSchemaValidator().getValidator({
|
||||
type: "object",
|
||||
properties: { title: { type: "string" } },
|
||||
required: ["title"],
|
||||
additionalProperties: false,
|
||||
});
|
||||
expect(validator({ title: "Artifact" })).toMatchObject({ valid: true });
|
||||
expect(validator({ title: 42 })).toMatchObject({ valid: false });
|
||||
|
||||
const sse = await import(`${pathToFileURL(join(sdkRoot, "dist", "esm", "client", "sse.js")).href}?test=${Date.now()}`);
|
||||
expect(sse.SSEClientTransport).toBeTypeOf("function");
|
||||
|
||||
expect(JSON.parse(readFileSync(join(nodeModules, "ajv", "package.json"), "utf8")).name).toBe("ajv");
|
||||
expect(JSON.parse(readFileSync(join(nodeModules, "eventsource", "package.json"), "utf8")).name).toBe("eventsource");
|
||||
} finally {
|
||||
rmSync(root, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user