mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-27 05:37:49 +00:00
fix(update): carry candidate plugin API version through doctor
This commit is contained in:
@@ -2365,12 +2365,21 @@ describe("update-cli", () => {
|
||||
termination: "exit",
|
||||
};
|
||||
});
|
||||
readPackageVersion.mockImplementation(async (packageRoot: string) => {
|
||||
const manifest = JSON.parse(
|
||||
await fs.readFile(path.join(packageRoot, "package.json"), "utf-8"),
|
||||
) as { version?: string };
|
||||
return manifest.version ?? "0.0.0";
|
||||
});
|
||||
|
||||
await updateCommand({ yes: true });
|
||||
|
||||
const doctorCall = doctorCommandCall();
|
||||
expect(doctorCall?.[0].slice(1)).toEqual([entryPath, "doctor", "--non-interactive", "--fix"]);
|
||||
expect(doctorCall?.[1].cwd).toBe(pkgRoot);
|
||||
expect(
|
||||
(doctorCall?.[1].env as NodeJS.ProcessEnv | undefined)?.OPENCLAW_COMPATIBILITY_HOST_VERSION,
|
||||
).toBe("2026.5.14");
|
||||
expect(defaultRuntime.exit).not.toHaveBeenCalledWith(1);
|
||||
});
|
||||
|
||||
|
||||
@@ -1403,6 +1403,7 @@ async function runPackageInstallUpdate(params: {
|
||||
const entryPath = await resolveGatewayInstallEntrypoint(verifiedPackageRoot);
|
||||
if (entryPath) {
|
||||
await createUpdateConfigSnapshot();
|
||||
const candidateHostVersion = await readPackageVersion(verifiedPackageRoot);
|
||||
return await runUpdateStep({
|
||||
name: `${CLI_NAME} doctor`,
|
||||
argv: [
|
||||
@@ -1421,6 +1422,7 @@ async function runPackageInstallUpdate(params: {
|
||||
OPENCLAW_UPDATE_IN_PROGRESS: "1",
|
||||
[UPDATE_DEFER_CONFIGURED_PLUGIN_INSTALL_REPAIR_ENV]: "1",
|
||||
[UPDATE_PARENT_SUPPORTS_DOCTOR_CONFIG_WRITE_ENV]: "1",
|
||||
OPENCLAW_COMPATIBILITY_HOST_VERSION: candidateHostVersion,
|
||||
},
|
||||
timeoutMs: params.timeoutMs,
|
||||
progress: params.progress,
|
||||
|
||||
@@ -499,7 +499,7 @@ export async function arrangeLegacyStateMigrationTest(): Promise<{
|
||||
|
||||
detectLegacyStateMigrations.mockClear();
|
||||
runLegacyStateMigrations.mockClear();
|
||||
detectLegacyStateMigrations.mockResolvedValueOnce(
|
||||
detectLegacyStateMigrations.mockResolvedValue(
|
||||
createLegacyStateMigrationDetectionResult({
|
||||
hasLegacySessions: true,
|
||||
preview: ["- Legacy sessions detected"],
|
||||
|
||||
@@ -1791,6 +1791,7 @@ describe("runGatewayUpdate", () => {
|
||||
expect(result.steps.map((step) => step.name)).toContain("openclaw doctor");
|
||||
expect(doctorEnv?.OPENCLAW_UPDATE_IN_PROGRESS).toBe("1");
|
||||
expect(doctorEnv?.OPENCLAW_UPDATE_PARENT_SUPPORTS_DOCTOR_CONFIG_WRITE).toBe("1");
|
||||
expect(doctorEnv?.OPENCLAW_COMPATIBILITY_HOST_VERSION).toBe("2.0.0");
|
||||
});
|
||||
|
||||
it("fails global npm updates when post-update doctor fails", async () => {
|
||||
|
||||
@@ -1477,6 +1477,7 @@ export async function runGatewayUpdate(opts: UpdateRunnerOptions = {}): Promise<
|
||||
return null;
|
||||
}
|
||||
const doctorNodePath = await resolveStableNodePath(process.execPath);
|
||||
const candidateHostVersion = await readPackageVersion(verifiedPackageRoot);
|
||||
return await runStep({
|
||||
runCommand,
|
||||
name: "openclaw doctor",
|
||||
@@ -1486,6 +1487,7 @@ export async function runGatewayUpdate(opts: UpdateRunnerOptions = {}): Promise<
|
||||
env: {
|
||||
OPENCLAW_UPDATE_IN_PROGRESS: "1",
|
||||
[UPDATE_PARENT_SUPPORTS_DOCTOR_CONFIG_WRITE_ENV]: "1",
|
||||
OPENCLAW_COMPATIBILITY_HOST_VERSION: candidateHostVersion,
|
||||
},
|
||||
progress,
|
||||
stepIndex: 0,
|
||||
|
||||
Reference in New Issue
Block a user