


























@@ -1,33 +1,28 @@
1-import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
1+import fs from "node:fs";
2+import path from "node:path";
3+import { fileURLToPath } from "node:url";
4+import { beforeAll, describe, expect, it } from "vitest";
25import type { OpenClawConfig } from "../config/types.openclaw.js";
364-const { resolvePluginWebSearchProvidersMock } = vi.hoisted(() => ({
5-resolvePluginWebSearchProvidersMock: vi.fn(() => [
6-{
7-id: "brave",
8-pluginId: "brave",
9-envVars: ["BRAVE_API_KEY"],
10-getCredentialValue: (searchConfig: Record<string, unknown> | undefined) =>
11-searchConfig?.apiKey,
12-},
13-]),
14-}));
15-16-vi.mock("./web-search-providers.runtime.js", () => ({
17-resolvePluginWebSearchProviders: resolvePluginWebSearchProvidersMock,
18-}));
7+const repoRoot = fileURLToPath(new URL("../..", import.meta.url));
198209let hasConfiguredWebSearchCredential: typeof import("./web-search-credential-presence.js").hasConfiguredWebSearchCredential;
21102211beforeAll(async () => {
2312({ hasConfiguredWebSearchCredential } = await import("./web-search-credential-presence.js"));
2413});
251426-beforeEach(() => {
27-resolvePluginWebSearchProvidersMock.mockClear();
28-});
29-3015describe("hasConfiguredWebSearchCredential", () => {
16+it("does not statically import web-search runtime providers", () => {
17+const source = fs.readFileSync(
18+path.join(repoRoot, "src/plugins/web-search-credential-presence.ts"),
19+"utf8",
20+);
21+22+expect(source).not.toMatch(/\bfrom\s+["'][^"']*web-search-providers\.runtime\.js["']/);
23+expect(source).not.toMatch(/\bfrom\s+["'][^"']*loader\.js["']/);
24+});
25+3126it("keeps empty config and env on the manifest-only path", () => {
3227expect(
3328hasConfiguredWebSearchCredential({
@@ -37,10 +32,9 @@ describe("hasConfiguredWebSearchCredential", () => {
3732bundledAllowlistCompat: true,
3833}),
3934).toBe(false);
40-expect(resolvePluginWebSearchProvidersMock).not.toHaveBeenCalled();
4135});
423643-it("loads provider runtime only when a credential candidate exists", () => {
37+it("detects configured web search credential candidates without runtime loading", () => {
4438expect(
4539hasConfiguredWebSearchCredential({
4640config: {
@@ -51,6 +45,5 @@ describe("hasConfiguredWebSearchCredential", () => {
5145bundledAllowlistCompat: true,
5246}),
5347).toBe(true);
54-expect(resolvePluginWebSearchProvidersMock).toHaveBeenCalledTimes(1);
5548});
5649});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。