fix(test): avoid source gateway import in rpc walk

This commit is contained in:
Vincent Koc
2026-05-25 12:01:49 +02:00
parent f950132207
commit e9b8a6ecbf
3 changed files with 105 additions and 27 deletions

View File

@@ -1,12 +1,52 @@
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
import { tmpdir } from "node:os";
import path from "node:path";
import { describe, expect, it, vi } from "vitest";
import {
assertResourceCeiling,
fetchJson,
findDistCallGatewayModuleFiles,
sampleProcess,
sampleWindowsProcessByPort,
summarizeProcessSamples,
usesBuiltOpenClawEntry,
} from "../../scripts/e2e/kitchen-sink-rpc-walk.mjs";
describe("kitchen-sink RPC caller loading", () => {
it("uses built callGateway chunks for dist and packaged entries", () => {
expect(usesBuiltOpenClawEntry({ command: "node", baseArgs: ["dist/index.js"] })).toBe(true);
expect(
usesBuiltOpenClawEntry(
{ command: "node", baseArgs: ["/app/openclaw.mjs"] },
"/repo",
{ OPENCLAW_ENTRY: "/app/openclaw.mjs" },
),
).toBe(true);
});
it("does not deep-import gateway TypeScript for source pnpm runners", () => {
expect(usesBuiltOpenClawEntry({ pnpm: true, baseArgs: ["openclaw"] })).toBe(false);
expect(usesBuiltOpenClawEntry({ command: "node", baseArgs: ["scripts/dev.mjs"] })).toBe(false);
});
it("finds only built callGateway chunks", () => {
const root = mkdtempSync(path.join(tmpdir(), "openclaw-rpc-call-chunks-"));
try {
mkdirSync(path.join(root, "dist"));
writeFileSync(path.join(root, "dist", "call-Abc123.js"), "");
writeFileSync(path.join(root, "dist", "call.runtime-Def456.js"), "");
writeFileSync(path.join(root, "dist", "index.js"), "");
expect(findDistCallGatewayModuleFiles(root)).toEqual([
"call-Abc123.js",
"call.runtime-Def456.js",
]);
} finally {
rmSync(root, { recursive: true, force: true });
}
});
});
describe("kitchen-sink RPC process sampling", () => {
it("samples RSS on Windows instead of silently disabling the resource guard", async () => {
const calls: Array<{ command: string; args: string[] }> = [];

View File

@@ -189,8 +189,10 @@ describe("scripts/lib/plugin-prerelease-test-plan.mjs", () => {
expect(walkScript).toContain("tts.providers");
expect(walkScript).toContain("plugins.uiDescriptors");
expect(walkScript).toContain("loadCallGatewayModule(options.runner)");
expect(walkScript).toContain("usesPackagedOpenClawEntry(runner)");
expect(walkScript).toContain("src/gateway/call.ts");
expect(walkScript).toContain("usesBuiltOpenClawEntry(runner)");
expect(walkScript).toContain('"gateway"');
expect(walkScript).toContain('"call"');
expect(walkScript).not.toContain("src/gateway/call.ts");
expect(walkScript).toContain("^call(?:\\.runtime)?");
});