




















@@ -55,6 +55,7 @@ import {
5555shouldUseManagedGatewayForInstallerRuntime,
5656shouldUseManagedGatewayService,
5757verifyDevUpdateStatus,
58+verifyPackagedUpgradeUpdateResult,
5859writePackageDistInventoryForCandidate,
5960} from "../../scripts/openclaw-cross-os-release-checks.ts";
6061@@ -508,6 +509,60 @@ describe("scripts/openclaw-cross-os-release-checks", () => {
508509});
509510});
510511512+it("accepts a successful packaged update followed by the old self-swapped process import miss", () => {
513+expect(() =>
514+verifyPackagedUpgradeUpdateResult(
515+{
516+exitCode: 1,
517+stdout: JSON.stringify({
518+status: "ok",
519+after: { version: "2026.4.27" },
520+steps: [{ name: "global update", exitCode: 0 }],
521+}),
522+stderr:
523+"[openclaw] Failed to start CLI: Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/tmp/prefix/lib/node_modules/openclaw/dist/memory-state-old.js'",
524+},
525+{ candidateVersion: "2026.4.27" },
526+),
527+).not.toThrow();
528+});
529+530+it("rejects packaged update failures before the candidate package lands", () => {
531+expect(() =>
532+verifyPackagedUpgradeUpdateResult(
533+{
534+exitCode: 1,
535+stdout: JSON.stringify({
536+status: "ok",
537+after: { version: "2026.4.26" },
538+steps: [{ name: "global update", exitCode: 0 }],
539+}),
540+stderr:
541+"[openclaw] Failed to start CLI: Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/tmp/prefix/lib/node_modules/openclaw/dist/memory-state-old.js'",
542+},
543+{ candidateVersion: "2026.4.27" },
544+),
545+).toThrow(/Packaged upgrade failed/u);
546+});
547+548+it("rejects packaged update failures with unsuccessful update steps", () => {
549+expect(() =>
550+verifyPackagedUpgradeUpdateResult(
551+{
552+exitCode: 1,
553+stdout: JSON.stringify({
554+status: "ok",
555+after: { version: "2026.4.27" },
556+steps: [{ name: "global update", exitCode: 1 }],
557+}),
558+stderr:
559+"[openclaw] Failed to start CLI: Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/tmp/prefix/lib/node_modules/openclaw/dist/memory-state-old.js'",
560+},
561+{ candidateVersion: "2026.4.27" },
562+),
563+).toThrow(/Packaged upgrade failed/u);
564+});
565+511566it("only treats pinned baseline specs as exact installer version assertions", () => {
512567expect(resolveExplicitBaselineVersion("")).toBe("");
513568expect(resolveExplicitBaselineVersion("openclaw@latest")).toBe("");
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。