mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-27 20:45:49 +00:00
fix(e2e): bound docker npm install phases
This commit is contained in:
@@ -24,7 +24,7 @@ mkdir -p "$git_root"
|
||||
tar -xzf "$package_tgz" -C "$git_root" --strip-components=1
|
||||
(
|
||||
cd "$git_root"
|
||||
npm install --omit=optional --no-fund --no-audit >/tmp/openclaw-git-install.log 2>&1
|
||||
openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install --omit=optional --no-fund --no-audit >/tmp/openclaw-git-install.log 2>&1
|
||||
git init -q
|
||||
git config user.email "docker-e2e@openclaw.local"
|
||||
git config user.name "OpenClaw Docker E2E"
|
||||
@@ -32,7 +32,7 @@ tar -xzf "$package_tgz" -C "$git_root" --strip-components=1
|
||||
git commit -qm "test fixture"
|
||||
)
|
||||
npm_log="/tmp/openclaw-doctor-switch-npm-install.log"
|
||||
if ! npm install -g --prefix /tmp/npm-prefix --omit=optional "$package_tgz" >"$npm_log" 2>&1; then
|
||||
if ! openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install -g --prefix /tmp/npm-prefix --omit=optional "$package_tgz" >"$npm_log" 2>&1; then
|
||||
cat "$npm_log"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -19,7 +19,7 @@ export OPENCLAW_NO_PROMPT=1
|
||||
|
||||
baseline="${OPENCLAW_UPDATE_CORRUPT_PLUGIN_BASELINE:-openclaw@latest}"
|
||||
echo "Installing baseline OpenClaw package: $baseline"
|
||||
if ! npm install -g --prefix /tmp/npm-prefix --omit=optional "$baseline" >/tmp/openclaw-update-corrupt-baseline-install.log 2>&1; then
|
||||
if ! openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install -g --prefix /tmp/npm-prefix --omit=optional "$baseline" >/tmp/openclaw-update-corrupt-baseline-install.log 2>&1; then
|
||||
cat /tmp/openclaw-update-corrupt-baseline-install.log >&2 || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -69,7 +69,10 @@ start_gateway() {
|
||||
}
|
||||
|
||||
echo "Installing published baseline $BASELINE_SPEC..."
|
||||
npm install -g "$BASELINE_SPEC" --no-fund --no-audit >/tmp/openclaw-release-upgrade-baseline-install.log 2>&1
|
||||
if ! openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install -g "$BASELINE_SPEC" --no-fund --no-audit >/tmp/openclaw-release-upgrade-baseline-install.log 2>&1; then
|
||||
cat /tmp/openclaw-release-upgrade-baseline-install.log >&2 || true
|
||||
exit 1
|
||||
fi
|
||||
command -v openclaw >/dev/null
|
||||
baseline_root="$(openclaw_e2e_package_root)"
|
||||
baseline_entry="$(openclaw_e2e_package_entrypoint "$baseline_root")"
|
||||
|
||||
@@ -649,7 +649,7 @@ reset_run_state() {
|
||||
install_baseline() {
|
||||
normalize_baseline
|
||||
echo "Installing baseline package: $baseline_spec"
|
||||
if ! npm install -g --prefix "$npm_config_prefix" "$baseline_spec" --no-fund --no-audit >"$BASELINE_INSTALL_LOG" 2>&1; then
|
||||
if ! openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install -g --prefix "$npm_config_prefix" "$baseline_spec" --no-fund --no-audit >"$BASELINE_INSTALL_LOG" 2>&1; then
|
||||
echo "baseline npm install failed" >&2
|
||||
cat "$BASELINE_INSTALL_LOG" >&2 || true
|
||||
return 1
|
||||
|
||||
@@ -55,6 +55,7 @@ docker_e2e_run_with_harness \
|
||||
"$IMAGE_NAME" \
|
||||
timeout "$DOCKER_RUN_TIMEOUT" bash -lc '
|
||||
set -euo pipefail
|
||||
source scripts/lib/openclaw-e2e-instance.sh
|
||||
|
||||
ARTIFACTS=/tmp/artifacts
|
||||
exec > >(tee "$ARTIFACTS/run.log") 2>&1
|
||||
@@ -106,7 +107,7 @@ export npm_config_audit=false
|
||||
export PATH="$NPM_PREFIX_A/bin:$NODE_A_DIR:$PATH"
|
||||
|
||||
echo "Installing OpenClaw package under node-A prefix: $NPM_PREFIX_A"
|
||||
npm install -g /tmp/openclaw-current.tgz --no-fund --no-audit >"$ARTIFACTS/install-a.log" 2>&1
|
||||
openclaw_e2e_install_package "$ARTIFACTS/install-a.log" "OpenClaw package under node-A prefix" "$NPM_PREFIX_A"
|
||||
echo "Installed. Checking openclaw location..."
|
||||
|
||||
OPENCLAW_A="$(command -v openclaw)"
|
||||
|
||||
@@ -60,7 +60,7 @@ tar -xzf "$package_tgz" -C "$git_root" --strip-components=1
|
||||
node scripts/e2e/lib/update-channel-switch/assertions.mjs prepare-git-fixture "$git_root"
|
||||
(
|
||||
cd "$git_root"
|
||||
if ! npm install --omit=optional --no-fund --no-audit >/tmp/openclaw-git-install.log 2>&1; then
|
||||
if ! openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install --omit=optional --no-fund --no-audit >/tmp/openclaw-git-install.log 2>&1; then
|
||||
cat /tmp/openclaw-git-install.log >&2 || true
|
||||
exit 1
|
||||
fi
|
||||
@@ -79,7 +79,11 @@ fixture_sha="$(git -C "$git_root" rev-parse HEAD)"
|
||||
|
||||
pkg_tgz_path="$package_tgz"
|
||||
|
||||
npm install -g --prefix /tmp/npm-prefix --omit=optional "$pkg_tgz_path"
|
||||
package_install_log="/tmp/openclaw-update-channel-switch-package-install.log"
|
||||
if ! openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install -g --prefix /tmp/npm-prefix --omit=optional "$pkg_tgz_path" >"$package_install_log" 2>&1; then
|
||||
cat "$package_install_log" >&2 || true
|
||||
exit 1
|
||||
fi
|
||||
package_version="$(node -p "JSON.parse(require(\"node:fs\").readFileSync(\"/tmp/npm-prefix/lib/node_modules/openclaw/package.json\", \"utf8\")).version")"
|
||||
OPENCLAW_PACKAGE_ACCEPTANCE_LEGACY_COMPAT="$(
|
||||
node scripts/e2e/lib/package-compat.mjs "$package_version"
|
||||
|
||||
@@ -51,6 +51,8 @@ const PLUGINS_DOCKER_ASSERTIONS_PATH = "scripts/e2e/lib/plugins/assertions.mjs";
|
||||
const PLUGINS_DOCKER_NPM_REGISTRY_PATH = "scripts/e2e/lib/plugins/npm-registry-server.mjs";
|
||||
const PLUGIN_UPDATE_DOCKER_E2E_PATH = "scripts/e2e/plugin-update-unchanged-docker.sh";
|
||||
const PLUGIN_UPDATE_SCENARIO_PATH = "scripts/e2e/lib/plugin-update/unchanged-scenario.sh";
|
||||
const PLUGIN_UPDATE_CORRUPT_SCENARIO_PATH =
|
||||
"scripts/e2e/lib/plugin-update/corrupt-update-scenario.sh";
|
||||
const PLUGIN_UPDATE_PROBE_PATH = "scripts/e2e/lib/plugin-update/probe.mjs";
|
||||
const DOCTOR_SWITCH_DOCKER_E2E_PATH = "scripts/e2e/doctor-install-switch-docker.sh";
|
||||
const DOCTOR_SWITCH_SCENARIO_PATH = "scripts/e2e/lib/doctor-install-switch/scenario.sh";
|
||||
@@ -58,6 +60,9 @@ const PACKAGE_COMPAT_PATH = "scripts/e2e/lib/package-compat.mjs";
|
||||
const UPDATE_CHANNEL_SWITCH_DOCKER_E2E_PATH = "scripts/e2e/update-channel-switch-docker.sh";
|
||||
const UPDATE_CHANNEL_SWITCH_ASSERTIONS_PATH =
|
||||
"scripts/e2e/lib/update-channel-switch/assertions.mjs";
|
||||
const RELEASE_UPGRADE_USER_JOURNEY_SCENARIO_PATH =
|
||||
"scripts/e2e/lib/release-upgrade-user-journey/scenario.sh";
|
||||
const UPGRADE_SURVIVOR_RUN_SCRIPT = "scripts/e2e/lib/upgrade-survivor/run.sh";
|
||||
const GATEWAY_NETWORK_DOCKER_E2E_PATH = "scripts/e2e/gateway-network-docker.sh";
|
||||
const CENTRALIZED_BUILD_SCRIPTS = [
|
||||
"scripts/docker/setup.sh",
|
||||
@@ -495,6 +500,36 @@ grep -qx -- "OPENCLAW_E2E_NPM_INSTALL_TIMEOUT=42s" "$TMPDIR/package-args"
|
||||
}
|
||||
});
|
||||
|
||||
it("wraps direct Docker E2E npm installs with the shared timeout helper", () => {
|
||||
const multiNode = readFileSync(MULTI_NODE_UPDATE_DOCKER_E2E_PATH, "utf8");
|
||||
const updateChannel = readFileSync(UPDATE_CHANNEL_SWITCH_DOCKER_E2E_PATH, "utf8");
|
||||
const doctorSwitch = readFileSync(DOCTOR_SWITCH_SCENARIO_PATH, "utf8");
|
||||
const releaseUpgrade = readFileSync(RELEASE_UPGRADE_USER_JOURNEY_SCENARIO_PATH, "utf8");
|
||||
const upgradeSurvivor = readFileSync(UPGRADE_SURVIVOR_RUN_SCRIPT, "utf8");
|
||||
const pluginCorrupt = readFileSync(PLUGIN_UPDATE_CORRUPT_SCENARIO_PATH, "utf8");
|
||||
|
||||
expect(multiNode).toContain(
|
||||
'openclaw_e2e_install_package "$ARTIFACTS/install-a.log" "OpenClaw package under node-A prefix" "$NPM_PREFIX_A"',
|
||||
);
|
||||
expect(updateChannel).toContain(
|
||||
'openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install --omit=optional --no-fund --no-audit',
|
||||
);
|
||||
expect(updateChannel).toContain(
|
||||
'openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install -g --prefix /tmp/npm-prefix --omit=optional "$pkg_tgz_path"',
|
||||
);
|
||||
expect(doctorSwitch).toContain(
|
||||
'openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install --omit=optional --no-fund --no-audit',
|
||||
);
|
||||
expect(doctorSwitch).toContain(
|
||||
'openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install -g --prefix /tmp/npm-prefix --omit=optional "$package_tgz"',
|
||||
);
|
||||
for (const script of [releaseUpgrade, upgradeSurvivor, pluginCorrupt]) {
|
||||
expect(script).toContain(
|
||||
'openclaw_e2e_maybe_timeout "${OPENCLAW_E2E_NPM_INSTALL_TIMEOUT:-600s}" npm install -g',
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
it("keeps the harness run wrapper available with pre-sourced Docker command helpers", () => {
|
||||
const workDir = mkdtempSync(join(tmpdir(), "openclaw-docker-package-helper-guard-"));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user