






















@@ -47,6 +47,15 @@ function requirePropertyDescriptor(
4747return descriptor;
4848}
494950+function expectEnumerableConfigurableDescriptor(
51+target: Record<string, unknown>,
52+propertyName: string,
53+): void {
54+const descriptor = requirePropertyDescriptor(target, propertyName);
55+expect(descriptor.configurable).toBe(true);
56+expect(descriptor.enumerable).toBe(true);
57+}
58+5059function loadRootAliasWithStubs(options?: {
5160distExists?: boolean;
5261distEntries?: string[];
@@ -280,10 +289,7 @@ describe("plugin-sdk root alias", () => {
280289expect(lazyModule.createJitiOptions.at(-1)?.tryNative).toBe(false);
281290expect((lazyRootSdk.slowHelper as () => string)()).toBe("loaded");
282291expect(Object.keys(lazyRootSdk)).toContain("slowHelper");
283-expect(requirePropertyDescriptor(lazyRootSdk, "slowHelper")).toMatchObject({
284-configurable: true,
285-enumerable: true,
286-});
292+expectEnumerableConfigurableDescriptor(lazyRootSdk, "slowHelper");
287293});
288294289295it.each([
@@ -374,16 +380,15 @@ describe("plugin-sdk root alias", () => {
374380});
375381376382expect((lazyModule.moduleExports.slowHelper as () => string)()).toBe("loaded");
377-expect(lazyModule.createJitiOptions.at(-1)?.alias).toMatchObject({
378-"openclaw/plugin-sdk": rootAliasPath,
379-"@openclaw/plugin-sdk": rootAliasPath,
380-"openclaw/plugin-sdk/group-access": expect.stringContaining(
381-path.join("src", "plugin-sdk", "group-access.ts"),
382-),
383-"@openclaw/plugin-sdk/group-access": expect.stringContaining(
384-path.join("src", "plugin-sdk", "group-access.ts"),
385-),
386-});
383+const aliasMap = (lazyModule.createJitiOptions.at(-1)?.alias ?? {}) as Record<string, string>;
384+expect(aliasMap["openclaw/plugin-sdk"]).toBe(rootAliasPath);
385+expect(aliasMap["@openclaw/plugin-sdk"]).toBe(rootAliasPath);
386+expect(aliasMap["openclaw/plugin-sdk/group-access"]).toContain(
387+path.join("src", "plugin-sdk", "group-access.ts"),
388+);
389+expect(aliasMap["@openclaw/plugin-sdk/group-access"]).toContain(
390+path.join("src", "plugin-sdk", "group-access.ts"),
391+);
387392});
388393389394it("keeps bootstrap plugin-sdk aliases deterministic and ignores unsafe subpaths", () => {
@@ -451,20 +456,13 @@ describe("plugin-sdk root alias", () => {
451456});
452457453458expect((lazyModule.moduleExports.slowHelper as () => string)()).toBe("loaded");
454-expect(lazyModule.createJitiOptions.at(-1)?.alias).toMatchObject({
455-"openclaw/plugin-sdk/channel-runtime": path.join(
456-packageRoot,
457-"src",
458-"plugin-sdk",
459-"channel-runtime.mts",
460-),
461-"@openclaw/plugin-sdk/channel-runtime": path.join(
462-packageRoot,
463-"src",
464-"plugin-sdk",
465-"channel-runtime.mts",
466-),
467-});
459+const aliasMap = (lazyModule.createJitiOptions.at(-1)?.alias ?? {}) as Record<string, string>;
460+expect(aliasMap["openclaw/plugin-sdk/channel-runtime"]).toBe(
461+path.join(packageRoot, "src", "plugin-sdk", "channel-runtime.mts"),
462+);
463+expect(aliasMap["@openclaw/plugin-sdk/channel-runtime"]).toBe(
464+path.join(packageRoot, "src", "plugin-sdk", "channel-runtime.mts"),
465+);
468466});
469467470468it("prefers hashed dist diagnostic events chunks before falling back to src", () => {
@@ -543,17 +541,18 @@ describe("plugin-sdk root alias", () => {
543541);
544542const lazyModule = loadRootAliasWithStubs({ monolithicExports });
545543546-expect(rootSdk.emptyPluginConfigSchema).toEqual(expect.any(Function));
547-expect(rootSdk.resolveControlCommandGate).toEqual(expect.any(Function));
548-expect(rootSdk.onDiagnosticEvent).toEqual(expect.any(Function));
544+expect(rootSdk.emptyPluginConfigSchema).toBeTypeOf("function");
545+expect(rootSdk.resolveControlCommandGate).toBeTypeOf("function");
546+expect(rootSdk.onDiagnosticEvent).toBeTypeOf("function");
549547550548for (const name of legacyRootExportNames) {
551549expect(lazyModule.moduleExports[name]).toBe(monolithicExports[name]);
552550}
553551expect(lazyModule.jitiLoadCalls).toBe(1);
554-expect(Object.keys(lazyModule.moduleExports)).toEqual(
555-expect.arrayContaining([...legacyRootExportNames]),
556-);
552+const exportKeys = Object.keys(lazyModule.moduleExports);
553+for (const name of legacyRootExportNames) {
554+expect(exportKeys).toContain(name);
555+}
557556expect(typeof rootSdk.default).toBe("object");
558557expect(rootSdk.default).toBe(rootSdk);
559558expect(rootSdk.__esModule).toBe(true);
@@ -589,10 +588,7 @@ describe("plugin-sdk root alias", () => {
589588const keys = Object.keys(rootSdk);
590589expect(keys).toContain("resolveControlCommandGate");
591590expect(keys).toContain("onDiagnosticEvent");
592-expect(requirePropertyDescriptor(rootSdk, "resolveControlCommandGate")).toMatchObject({
593-configurable: true,
594-enumerable: true,
595-});
591+expectEnumerableConfigurableDescriptor(rootSdk, "resolveControlCommandGate");
596592expect(typeof requirePropertyDescriptor(rootSdk, "onDiagnosticEvent").value).toBe("function");
597593});
598594});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。