





















@@ -51,13 +51,18 @@ const PLUGINS_DOCKER_ASSERTIONS_PATH = "scripts/e2e/lib/plugins/assertions.mjs";
5151const PLUGINS_DOCKER_NPM_REGISTRY_PATH = "scripts/e2e/lib/plugins/npm-registry-server.mjs";
5252const PLUGIN_UPDATE_DOCKER_E2E_PATH = "scripts/e2e/plugin-update-unchanged-docker.sh";
5353const PLUGIN_UPDATE_SCENARIO_PATH = "scripts/e2e/lib/plugin-update/unchanged-scenario.sh";
54+const PLUGIN_UPDATE_CORRUPT_SCENARIO_PATH =
55+"scripts/e2e/lib/plugin-update/corrupt-update-scenario.sh";
5456const PLUGIN_UPDATE_PROBE_PATH = "scripts/e2e/lib/plugin-update/probe.mjs";
5557const DOCTOR_SWITCH_DOCKER_E2E_PATH = "scripts/e2e/doctor-install-switch-docker.sh";
5658const DOCTOR_SWITCH_SCENARIO_PATH = "scripts/e2e/lib/doctor-install-switch/scenario.sh";
5759const PACKAGE_COMPAT_PATH = "scripts/e2e/lib/package-compat.mjs";
5860const UPDATE_CHANNEL_SWITCH_DOCKER_E2E_PATH = "scripts/e2e/update-channel-switch-docker.sh";
5961const UPDATE_CHANNEL_SWITCH_ASSERTIONS_PATH =
6062"scripts/e2e/lib/update-channel-switch/assertions.mjs";
63+const RELEASE_UPGRADE_USER_JOURNEY_SCENARIO_PATH =
64+"scripts/e2e/lib/release-upgrade-user-journey/scenario.sh";
65+const UPGRADE_SURVIVOR_RUN_SCRIPT = "scripts/e2e/lib/upgrade-survivor/run.sh";
6166const GATEWAY_NETWORK_DOCKER_E2E_PATH = "scripts/e2e/gateway-network-docker.sh";
6267const CENTRALIZED_BUILD_SCRIPTS = [
6368"scripts/docker/setup.sh",
@@ -495,6 +500,36 @@ grep -qx -- "OPENCLAW_E2E_NPM_INSTALL_TIMEOUT=42s" "$TMPDIR/package-args"
495500}
496501});
497502503+it("wraps direct Docker E2E npm installs with the shared timeout helper", () => {
504+const multiNode = readFileSync(MULTI_NODE_UPDATE_DOCKER_E2E_PATH, "utf8");
505+const updateChannel = readFileSync(UPDATE_CHANNEL_SWITCH_DOCKER_E2E_PATH, "utf8");
506+const doctorSwitch = readFileSync(DOCTOR_SWITCH_SCENARIO_PATH, "utf8");
507+const releaseUpgrade = readFileSync(RELEASE_UPGRADE_USER_JOURNEY_SCENARIO_PATH, "utf8");
508+const upgradeSurvivor = readFileSync(UPGRADE_SURVIVOR_RUN_SCRIPT, "utf8");
509+const pluginCorrupt = readFileSync(PLUGIN_UPDATE_CORRUPT_SCENARIO_PATH, "utf8");
510+511+expect(multiNode).toContain(
512+'openclaw_e2e_install_package "$ARTIFACTS/install-a.log" "OpenClaw package under node-A prefix" "$NPM_PREFIX_A"',
513+);
514+expect(updateChannel).toContain(
515+'openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install --omit=optional --no-fund --no-audit',
516+);
517+expect(updateChannel).toContain(
518+'openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install -g --prefix /tmp/npm-prefix --omit=optional "$pkg_tgz_path"',
519+);
520+expect(doctorSwitch).toContain(
521+'openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install --omit=optional --no-fund --no-audit',
522+);
523+expect(doctorSwitch).toContain(
524+'openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install -g --prefix /tmp/npm-prefix --omit=optional "$package_tgz"',
525+);
526+for (const script of [releaseUpgrade, upgradeSurvivor, pluginCorrupt]) {
527+expect(script).toContain(
528+'openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install -g',
529+);
530+}
531+});
532+498533it("keeps the harness run wrapper available with pre-sourced Docker command helpers", () => {
499534const workDir = mkdtempSync(join(tmpdir(), "openclaw-docker-package-helper-guard-"));
500535此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。