import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; const SCRIPT_PATH = "scripts/test-install-sh-docker.sh"; const SMOKE_RUNNER_PATH = "scripts/docker/install-sh-smoke/run.sh"; describe("test-install-sh-docker", () => { it("defaults local Apple Silicon smoke runs to native arm64 while keeping CI on amd64", () => { const script = readFileSync(SCRIPT_PATH, "utf8"); expect(script).toContain("resolve_default_smoke_platform"); expect(script).toContain('printf "linux/amd64"'); expect(script).toContain('[[ "$host_os" == "Darwin" && "$host_arch" == "arm64" ]]'); expect(script).toContain('printf "linux/arm64"'); }); it("supports npm update package specs without a separate expected-version env", () => { const script = readFileSync(SCRIPT_PATH, "utf8"); expect(script).toContain( 'UPDATE_EXPECT_VERSION="${OPENCLAW_INSTALL_SMOKE_UPDATE_EXPECT_VERSION:-}"', ); expect(script).toContain('if [[ -z "$UPDATE_EXPECT_VERSION" ]]; then'); expect(script).toContain('UPDATE_EXPECT_VERSION="$packed_update_version"'); expect(script).toContain( "packed update version ${packed_update_version} does not match expected ${UPDATE_EXPECT_VERSION}", ); }); it("prints package size audits for release smoke tarballs", () => { const script = readFileSync(SCRIPT_PATH, "utf8"); expect(script).toContain("print_pack_audit"); expect(script).toContain("print_pack_delta_audit"); expect(script).toContain("==> Pack audit"); expect(script).toContain("==> Pack audit delta"); }); }); describe("install-sh smoke runner", () => { it("wraps long npm/update operations with heartbeat and install-size audits", () => { const script = readFileSync(SMOKE_RUNNER_PATH, "utf8"); expect(script).toContain( 'HEARTBEAT_INTERVAL="${OPENCLAW_INSTALL_SMOKE_HEARTBEAT_INTERVAL:-60}"', ); expect(script).toContain("run_with_heartbeat"); expect(script).toContain("==> Still running"); expect(script).toContain("print_install_audit"); expect(script).toContain("quiet_npm install -g --omit=optional"); expect(script).toContain("openclaw update --tag"); }); });