From cd1de5867c84af61969dca400895603b92505379 Mon Sep 17 00:00:00 2001 From: Yichen Jiang Date: Sat, 5 Sep 2026 17:03:57 +0800 Subject: [PATCH] test(plugins): let the bare Loader assign the inventory spec's row ids --- .../plugin-inventory/tests/inventory.spec.ts | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/host/plugin-inventory/tests/inventory.spec.ts b/packages/host/plugin-inventory/tests/inventory.spec.ts index 20d4e930c2..1d20cb0be7 100644 --- a/packages/host/plugin-inventory/tests/inventory.spec.ts +++ b/packages/host/plugin-inventory/tests/inventory.spec.ts @@ -3,7 +3,7 @@ import { Context, FiberState, type Plugin } from '@deepseek-ai/cordis' import Loader from '@deepseek-ai/cordis-plugin-loader' import { remoteMethods } from '@deepseek-ai/dsh-typert-protocol' import type { AgentPresets } from '@deepseek-ai/dsh-agent-presets' -import { ensurePluginFailures, type ProfileRuntime } from '@deepseek-ai/dsh-app-boot' +import { ensurePluginFailures, type ProfileRuntime, type RowOrigin } from '@deepseek-ai/dsh-app-boot' import PluginInventoryGateway from '../src/index.ts' const contexts: Context[] = [] @@ -99,29 +99,30 @@ describe('PluginInventoryGateway', () => { it('attributes rows to their bundle through the profile runtime and lists recorded failures', async () => { const { ctx, inventory } = await harness() - const versioned = await ctx.loader.create({ id: 'versioned', name: 'cordis:active' }) - const bare = await ctx.loader.create({ id: 'bare', name: 'cordis:active' }) - const off = await ctx.loader.create({ id: 'off', name: 'cordis:active', disabled: true }) - const origins = new Map([ - ['versioned', { trust: 'external', packageName: 'ext', version: '1.2.3' }], - ['bare', { trust: 'external', packageName: 'ext' }], - ['off', { trust: 'external', packageName: 'ext' }], + // A bare Loader assigns ids; without a root include they are also the tree-wide ids. + const versioned = await ctx.loader.create({ name: 'cordis:active' }) + const bare = await ctx.loader.create({ name: 'cordis:active' }) + const off = await ctx.loader.create({ name: 'cordis:active', disabled: true }) + const origins = new Map([ + [versioned, { trust: 'external', packageName: 'ext', version: '1.2.3' }], + [bare, { trust: 'external', packageName: 'ext' }], + [off, { trust: 'external', packageName: 'ext' }], ['gone', { trust: 'external', packageName: 'ext' }], - ] as const) + ]) ctx.provide('profileRuntime', { - originOf: (rowId: string) => origins.get(rowId as never), - userDisabledRowIds: () => new Set(['off']), + originOf: (rowId: string) => origins.get(rowId), + userDisabledRowIds: () => new Set([off]), } as Partial as never) const registry = ensurePluginFailures(ctx) registry.record({ entryId: 'gone', rowId: 'gone', moduleName: 'cordis:throws', groupId: 'bundle/ext', stage: 'apply', message: 'boom' }) // A record of a row that later mounted rides on the live entry and is not listed twice. - registry.record({ entryId: bare, rowId: 'bare', moduleName: 'cordis:active', groupId: 'bundle/ext', stage: 'import', message: 'stale' }) + registry.record({ entryId: bare, rowId: bare, moduleName: 'cordis:active', groupId: 'bundle/ext', stage: 'import', message: 'stale' }) registry.record({ - entryId: 'conflict:bundle/late:versioned', rowId: 'versioned', moduleName: 'late', groupId: 'bundle/late', + entryId: 'conflict:bundle/late:versioned', rowId: versioned, moduleName: 'late', groupId: 'bundle/late', packageName: 'late', stage: 'conflict', message: 'row "versioned" is already declared by ext', }) registry.record({ - entryId: 'conflict:/home/cordis.patch.yml:bare', rowId: 'bare', moduleName: 'mine', groupId: '/home/cordis.patch.yml', + entryId: 'conflict:/home/cordis.patch.yml:bare', rowId: bare, moduleName: 'mine', groupId: '/home/cordis.patch.yml', stage: 'conflict', message: 'row "bare" is already declared by ext', })