




















@@ -300,6 +300,43 @@ docker_build_transient_failure "$LOG_PATH"
300300);
301301});
302302303+it("rejects malformed Docker E2E resource limits before a suite starts", () => {
304+const helper = readFileSync(DOCKER_E2E_IMAGE_HELPER_PATH, "utf8");
305+const scripts = [
306+readFileSync(ONBOARD_DOCKER_E2E_PATH, "utf8"),
307+readFileSync(KITCHEN_SINK_PLUGIN_DOCKER_E2E_PATH, "utf8"),
308+readFileSync(KITCHEN_SINK_RPC_DOCKER_E2E_PATH, "utf8"),
309+readFileSync(OPENWEBUI_DOCKER_E2E_PATH, "utf8"),
310+];
311+312+expect(helper).toContain("docker_e2e_read_nonnegative_decimal_env()");
313+for (const script of scripts) {
314+expect(script).toContain("docker_e2e_read_nonnegative_decimal_env");
315+}
316+317+const runProbe = (value: string) => {
318+const script = [
319+"source scripts/lib/docker-e2e-image.sh",
320+"docker_e2e_read_nonnegative_decimal_env OPENCLAW_SAMPLE_RESOURCE_LIMIT 2048",
321+].join("\n");
322+return spawnSync("bash", ["-c", script], {
323+cwd: process.cwd(),
324+encoding: "utf8",
325+env: {
326+ ...process.env,
327+OPENCLAW_SAMPLE_RESOURCE_LIMIT: value,
328+},
329+});
330+};
331+332+const invalid = runProbe("12mb");
333+const decimal = runProbe("12.5");
334+expect(invalid.status).toBe(2);
335+expect(invalid.stderr).toContain("invalid OPENCLAW_SAMPLE_RESOURCE_LIMIT: 12mb");
336+expect(decimal.status).toBe(0);
337+expect(decimal.stdout.trimEnd()).toBe("12.5");
338+});
339+303340it("keeps Testbox image-build fallback before isolating live MCP code-mode runtime flags", () => {
304341const script = readFileSync(MCP_CODE_MODE_GATEWAY_LIVE_DOCKER_E2E_PATH, "utf8");
305342const buildIndex = script.indexOf('docker_e2e_build_or_reuse "$IMAGE_NAME"');
@@ -3003,10 +3040,10 @@ output="$(cat "$sampler_log")"
30033040const wrapper = readFileSync("scripts/test-install-sh-e2e-docker.sh", "utf8");
3004304130053042expect(runner).toContain(
3006-"AGENT_TURNS_PARALLEL=\"$(read_boolean_env OPENCLAW_INSTALL_E2E_AGENT_TURNS_PARALLEL 1)\"",
3043+'AGENT_TURNS_PARALLEL="$(read_boolean_env OPENCLAW_INSTALL_E2E_AGENT_TURNS_PARALLEL 1)"',
30073044);
30083045expect(runner).toContain(
3009-"AGENT_TOOL_SMOKE=\"$(read_boolean_env OPENCLAW_INSTALL_E2E_AGENT_TOOL_SMOKE 1)\"",
3046+'AGENT_TOOL_SMOKE="$(read_boolean_env OPENCLAW_INSTALL_E2E_AGENT_TOOL_SMOKE 1)"',
30103047);
30113048expect(runner).toContain("time_phase");
30123049expect(runner).toContain("phase_mark_start");
@@ -3033,7 +3070,7 @@ output="$(cat "$sampler_log")"
30333070expect(runner).toContain("OPENCLAW_INSTALL_E2E_OPENAI_MODEL");
30343071expect(runner).toContain("OPENCLAW_INSTALL_E2E_OPENAI_PROVIDER_TIMEOUT_SECONDS");
30353072expect(runner).toContain(
3036-"AGENT_TURN_TIMEOUT_SECONDS=\"$(read_positive_int_env OPENCLAW_INSTALL_E2E_AGENT_TURN_TIMEOUT_SECONDS 300)\"",
3073+'AGENT_TURN_TIMEOUT_SECONDS="$(read_positive_int_env OPENCLAW_INSTALL_E2E_AGENT_TURN_TIMEOUT_SECONDS 300)"',
30373074);
30383075});
30393076此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。