fix(e2e): preserve Windows config shape during updates

This commit is contained in:
Vincent Koc
2026-07-04 12:49:52 -07:00
parent bee5dee521
commit a580a7fe3f
3 changed files with 57 additions and 46 deletions

View File

@@ -846,6 +846,11 @@ exit 7
it("scrubs future plugin entries before invoking old same-guest updaters", () => {
const script = readFileSync(UPDATE_SCRIPTS_PATH, "utf8");
const windowsScript = windowsUpdateScript({
auth: TEST_AUTH,
expectedNeedle: "2026.5.3-beta.2",
updateTarget: "2026.5.3-beta.2",
});
const macosScript = macosUpdateScript({
auth: TEST_AUTH,
expectedNeedle: "2026.5.3-beta.2",
@@ -856,9 +861,18 @@ exit 7
expect(script).toContain("scrub_future_plugin_entries");
expect(script).toContain("delete plugins.entries.feishu");
expect(script).toContain("delete plugins.entries.whatsapp");
expect(script).toContain("if ($null -ne $allow)");
expect(script).not.toContain("if ($allow -is [array])");
expect(script).toContain("Remove-FuturePluginEntries\nStop-OpenClawGatewayProcesses");
expect(windowsScript).toContain(
'const futurePluginIds = new Set(["feishu", "whatsapp", "openai"])',
);
expect(windowsScript).toContain('replace(/^\\uFEFF/u, "")');
expect(windowsScript).toContain("if (allow.length !== plugins.allow.length)");
expect(windowsScript).toContain('JSON.stringify(config, null, 2) + "\\n"');
expect(windowsScript).not.toContain("ConvertTo-Json -Depth 100");
expect(windowsScript).toContain("& node.exe $nodeScriptPath $configPath");
expect(windowsScript).toContain(
"Remove-Item $nodeScriptPath -Force -ErrorAction SilentlyContinue",
);
expect(windowsScript).toContain("Remove-FuturePluginEntries\nStop-OpenClawGatewayProcesses");
expect(script).toContain("scrub_future_plugin_entries\nstop_openclaw_gateway_processes");
expect(script).toContain("Invoke-WithScopedEnv @{ OPENCLAW_DISABLE_BUNDLED_PLUGINS = '1'");
expect(macosScript).toContain('OPENCLAW_BIN="$(resolve_required_command openclaw)"');

View File

@@ -1399,9 +1399,10 @@ if (isPrlctl) {
const script = readFileSync(TS_PATHS.npmUpdateScripts, "utf8");
expect(script).not.toContain("ConvertFrom-Json -AsHashtable");
expect(script).toContain("function Get-OpenClawJsonProperty");
expect(script).toContain("function Remove-OpenClawJsonProperty");
expect(script).toContain("Remove-OpenClawJsonProperty $entries $pluginId");
expect(script).not.toContain("ConvertTo-Json -Depth 100");
expect(script).toContain('replace(/^\\\\uFEFF/u, "")');
expect(script).toContain("$nodeScript | Set-Content -Path $nodeScriptPath -Encoding UTF8");
expect(script).toContain("& node.exe $nodeScriptPath $configPath");
});
it("keeps aggregate update guest scripts isolated from the npm-update orchestrator", () => {