mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-01 02:50:26 +00:00
Plugins: fix env-aware root resolution and caching (#44046)
Merged via squash.
Prepared head SHA: 6e8852a188
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
This commit is contained in:
committed by
GitHub
parent
688e3f0863
commit
e6897c800b
@@ -245,4 +245,79 @@ describe("syncPluginsForUpdateChannel", () => {
|
||||
});
|
||||
expect(installPluginFromNpmSpecMock).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("forwards an explicit env to bundled plugin source resolution", async () => {
|
||||
resolveBundledPluginSourcesMock.mockReturnValue(new Map());
|
||||
const env = { OPENCLAW_HOME: "/srv/openclaw-home" } as NodeJS.ProcessEnv;
|
||||
|
||||
const { syncPluginsForUpdateChannel } = await import("./update.js");
|
||||
await syncPluginsForUpdateChannel({
|
||||
channel: "beta",
|
||||
config: {},
|
||||
workspaceDir: "/workspace",
|
||||
env,
|
||||
});
|
||||
|
||||
expect(resolveBundledPluginSourcesMock).toHaveBeenCalledWith({
|
||||
workspaceDir: "/workspace",
|
||||
env,
|
||||
});
|
||||
});
|
||||
|
||||
it("uses the provided env when matching bundled load and install paths", async () => {
|
||||
const bundledHome = "/tmp/openclaw-home";
|
||||
resolveBundledPluginSourcesMock.mockReturnValue(
|
||||
new Map([
|
||||
[
|
||||
"feishu",
|
||||
{
|
||||
pluginId: "feishu",
|
||||
localPath: `${bundledHome}/plugins/feishu`,
|
||||
npmSpec: "@openclaw/feishu",
|
||||
},
|
||||
],
|
||||
]),
|
||||
);
|
||||
|
||||
const previousHome = process.env.HOME;
|
||||
process.env.HOME = "/tmp/process-home";
|
||||
try {
|
||||
const { syncPluginsForUpdateChannel } = await import("./update.js");
|
||||
const result = await syncPluginsForUpdateChannel({
|
||||
channel: "beta",
|
||||
env: {
|
||||
...process.env,
|
||||
OPENCLAW_HOME: bundledHome,
|
||||
HOME: "/tmp/ignored-home",
|
||||
},
|
||||
config: {
|
||||
plugins: {
|
||||
load: { paths: ["~/plugins/feishu"] },
|
||||
installs: {
|
||||
feishu: {
|
||||
source: "path",
|
||||
sourcePath: "~/plugins/feishu",
|
||||
installPath: "~/plugins/feishu",
|
||||
spec: "@openclaw/feishu",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(result.changed).toBe(false);
|
||||
expect(result.config.plugins?.load?.paths).toEqual(["~/plugins/feishu"]);
|
||||
expect(result.config.plugins?.installs?.feishu).toMatchObject({
|
||||
source: "path",
|
||||
sourcePath: "~/plugins/feishu",
|
||||
installPath: "~/plugins/feishu",
|
||||
});
|
||||
} finally {
|
||||
if (previousHome === undefined) {
|
||||
delete process.env.HOME;
|
||||
} else {
|
||||
process.env.HOME = previousHome;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user