test: avoid deepseek loader cold path

This commit is contained in:
Peter Steinberger
2026-05-06 08:17:38 +01:00
parent 53809e52e9
commit 900e416688

View File

@@ -2361,23 +2361,78 @@ module.exports = { id: "throws-after-import", register() {} };`,
).toBe(true);
});
it("can scope bundled provider loads to deepseek without hanging", () => {
it("can scope bundled provider loads without hanging", () => {
const bundledDir = makeTempDir();
const scopedDir = path.join(bundledDir, "scoped-provider");
mkdirSafe(scopedDir);
fs.writeFileSync(
path.join(scopedDir, "package.json"),
JSON.stringify({
name: "@openclaw/scoped-provider",
openclaw: { extensions: ["./index.cjs"] },
}),
"utf-8",
);
const plugin = writePlugin({
id: "scoped-provider",
dir: scopedDir,
filename: "index.cjs",
body: `module.exports = {
id: "scoped-provider",
register(api) {
api.registerProvider({
id: "scoped-provider",
label: "Scoped Provider",
auth: [],
});
},
};`,
});
updatePluginManifest(plugin, { enabledByDefault: true, providers: ["scoped-provider"] });
const unscopedDir = path.join(bundledDir, "unscoped-provider");
mkdirSafe(unscopedDir);
fs.writeFileSync(
path.join(unscopedDir, "package.json"),
JSON.stringify({
name: "@openclaw/unscoped-provider",
openclaw: { extensions: ["./index.cjs"] },
}),
"utf-8",
);
const unscoped = writePlugin({
id: "unscoped-provider",
dir: unscopedDir,
filename: "index.cjs",
body: `module.exports = {
id: "unscoped-provider",
register() {
throw new Error("unscoped provider should not load");
},
};`,
});
updatePluginManifest(unscoped, {
enabledByDefault: true,
providers: ["unscoped-provider"],
});
process.env.OPENCLAW_BUNDLED_PLUGINS_DIR = bundledDir;
delete process.env.OPENCLAW_DISABLE_BUNDLED_PLUGINS;
const scoped = loadOpenClawPlugins({
cache: false,
activate: false,
pluginSdkResolution: "dist",
config: {
plugins: {
enabled: true,
allow: ["deepseek"],
allow: ["scoped-provider", "unscoped-provider"],
},
},
onlyPluginIds: ["deepseek"],
onlyPluginIds: ["scoped-provider"],
});
expect(scoped.plugins.map((entry) => entry.id)).toEqual(["deepseek"]);
expect(scoped.plugins.map((entry) => entry.id)).toEqual(["scoped-provider"]);
expect(scoped.plugins[0]?.status).toBe("loaded");
expect(scoped.providers.map((entry) => entry.provider.id)).toEqual(["deepseek"]);
expect(scoped.providers.map((entry) => entry.provider.id)).toEqual(["scoped-provider"]);
});
it("does not replace active memory plugin registries during non-activating loads", () => {