Tests: default-disable plugins in VITEST

This commit is contained in:
Josh Palmer
2026-01-29 17:14:14 +01:00
parent 5f4715acfc
commit 4b5514a259
3 changed files with 107 additions and 1 deletions

View File

@@ -64,6 +64,72 @@ export const normalizePluginsConfig = (
};
};
const hasExplicitMemorySlot = (plugins?: MoltbotConfig["plugins"]) =>
Boolean(plugins?.slots && Object.prototype.hasOwnProperty.call(plugins.slots, "memory"));
const hasExplicitMemoryEntry = (plugins?: MoltbotConfig["plugins"]) =>
Boolean(plugins?.entries && Object.prototype.hasOwnProperty.call(plugins.entries, "memory-core"));
const hasExplicitPluginConfig = (plugins?: MoltbotConfig["plugins"]) => {
if (!plugins) return false;
if (typeof plugins.enabled === "boolean") return true;
if (Array.isArray(plugins.allow) && plugins.allow.length > 0) return true;
if (Array.isArray(plugins.deny) && plugins.deny.length > 0) return true;
if (plugins.load?.paths && Array.isArray(plugins.load.paths) && plugins.load.paths.length > 0)
return true;
if (plugins.slots && Object.keys(plugins.slots).length > 0) return true;
if (plugins.entries && Object.keys(plugins.entries).length > 0) return true;
return false;
};
export function applyTestPluginDefaults(
cfg: MoltbotConfig,
env: NodeJS.ProcessEnv = process.env,
): MoltbotConfig {
if (!env.VITEST) return cfg;
const plugins = cfg.plugins;
const explicitConfig = hasExplicitPluginConfig(plugins);
if (explicitConfig) {
if (hasExplicitMemorySlot(plugins) || hasExplicitMemoryEntry(plugins)) {
return cfg;
}
return {
...cfg,
plugins: {
...plugins,
slots: {
...plugins?.slots,
memory: null,
},
},
};
}
return {
...cfg,
plugins: {
...plugins,
enabled: false,
slots: {
...plugins?.slots,
memory: null,
},
},
};
}
export function isTestDefaultMemorySlotDisabled(
cfg: MoltbotConfig,
env: NodeJS.ProcessEnv = process.env,
): boolean {
if (!env.VITEST) return false;
const plugins = cfg.plugins;
if (hasExplicitMemorySlot(plugins) || hasExplicitMemoryEntry(plugins)) {
return false;
}
return true;
}
export function resolveEnableState(
id: string,
origin: PluginRecord["origin"],

View File

@@ -10,6 +10,7 @@ import { resolveUserPath } from "../utils.js";
import { discoverMoltbotPlugins } from "./discovery.js";
import { loadPluginManifestRegistry } from "./manifest-registry.js";
import {
applyTestPluginDefaults,
normalizePluginsConfig,
resolveEnableState,
resolveMemorySlotDecision,
@@ -162,7 +163,7 @@ function pushDiagnostics(diagnostics: PluginDiagnostic[], append: PluginDiagnost
}
export function loadMoltbotPlugins(options: PluginLoadOptions = {}): PluginRegistry {
const cfg = options.config ?? {};
const cfg = applyTestPluginDefaults(options.config ?? {});
const logger = options.logger ?? defaultLogger();
const validateOnly = options.mode === "validate";
const normalized = normalizePluginsConfig(cfg.plugins);