From 1f73673ebe073f6b6dc575eeb3e1f677a8ce1374 Mon Sep 17 00:00:00 2001 From: sunlei Date: Tue, 16 Jun 2026 01:19:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=86=85=E7=BD=AE?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E8=BF=90=E8=A1=8C=E6=80=81=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../builtin-plugin-package-loader.service.ts | 2 +- .../builtin-plugin-package-loader.spec.ts | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 test/modules/qqbot/plugin-platform/builtin-plugin-package-loader.spec.ts diff --git a/src/modules/qqbot/plugin-platform/infrastructure/integration/package/builtin-plugin-package-loader.service.ts b/src/modules/qqbot/plugin-platform/infrastructure/integration/package/builtin-plugin-package-loader.service.ts index e4c24a0..ce678c1 100644 --- a/src/modules/qqbot/plugin-platform/infrastructure/integration/package/builtin-plugin-package-loader.service.ts +++ b/src/modules/qqbot/plugin-platform/infrastructure/integration/package/builtin-plugin-package-loader.service.ts @@ -177,7 +177,7 @@ export class QqbotBuiltinPluginPackageLoaderService { `src/modules/qqbot/plugins/${pluginKey}`, ); if (existsSync(join(sourceRoot, 'plugin.json'))) return sourceRoot; - return join(__dirname, `../../../plugins/${pluginKey}`); + return join(__dirname, `../../../../plugins/${pluginKey}`); } } diff --git a/test/modules/qqbot/plugin-platform/builtin-plugin-package-loader.spec.ts b/test/modules/qqbot/plugin-platform/builtin-plugin-package-loader.spec.ts new file mode 100644 index 0000000..d5b42e6 --- /dev/null +++ b/test/modules/qqbot/plugin-platform/builtin-plugin-package-loader.spec.ts @@ -0,0 +1,34 @@ +import { mkdtempSync, rmSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { QqbotBuiltinPluginPackageLoaderService } from '@/modules/qqbot/plugin-platform/infrastructure/integration/package/builtin-plugin-package-loader.service'; + +describe('QqbotBuiltinPluginPackageLoaderService', () => { + const createLoader = () => + new QqbotBuiltinPluginPackageLoaderService( + {} as any, + {} as any, + {} as any, + {} as any, + {} as any, + {} as any, + ) as any; + + it('resolves built-in plugin manifests from compiled qqbot plugin package root', () => { + const originalCwd = process.cwd(); + const sandbox = mkdtempSync(join(tmpdir(), 'kt-plugin-loader-')); + + try { + process.chdir(sandbox); + + const pluginRoot = createLoader().resolvePluginRoot('bangdream') as string; + const normalized = pluginRoot.replace(/\\/g, '/'); + + expect(normalized).toMatch(/modules\/qqbot\/plugins\/bangdream$/); + expect(normalized).not.toContain('/plugin-platform/plugins/'); + } finally { + process.chdir(originalCwd); + rmSync(sandbox, { recursive: true, force: true }); + } + }); +});