Files
Ncurator/tests/case/unit/knowledge/packaged-knowledge-identity.test.ts
huangyuan 508132adba perf(test): reuse knowledge computations and expand skill live evaluation
Share content-addressed parsing and embedding caches across isolated test runs, fingerprint relevant dependencies and model assets, and remove implicit UI warm-up. Add realistic two-round Skill delivery evaluation and cache regressions.
2026-10-23 18:50:49 +08:00

36 lines
1.7 KiB
TypeScript

import { mkdtemp, mkdir, rm, writeFile } from 'node:fs/promises'
import os from 'node:os'
import path from 'node:path'
import { createPackage } from '@electron/asar'
import { describe, expect, it } from 'vitest'
import { readPackagedKnowledgeCacheIdentity } from '../../../../scripts/test/package-app.mjs'
describe('installed knowledge computation identity', () => {
for (const platform of ['darwin', 'win32']) {
it(`reads the actual ${platform} archive and rejects legacy or damaged identities`, async () => {
const root = await mkdtemp(path.join(os.tmpdir(), 'ncurator-installed-identity-'))
try {
const source = path.join(root, 'source')
const resources =
platform === 'darwin'
? path.join(root, 'Contents', 'Resources')
: path.join(root, 'resources')
await mkdir(path.join(source, 'out', 'main'), { recursive: true })
await mkdir(resources, { recursive: true })
await createPackage(source, path.join(resources, 'app.asar'))
expect(readPackagedKnowledgeCacheIdentity(root, platform)).toBeNull()
const identity = { split: 'a'.repeat(64), embedding: 'b'.repeat(64) }
const metadata = path.join(source, 'out', 'main', 'knowledge-cache-identity.json')
await writeFile(metadata, JSON.stringify(identity))
await createPackage(source, path.join(resources, 'app.asar'))
expect(readPackagedKnowledgeCacheIdentity(root, platform)).toEqual(identity)
await writeFile(metadata, '{"split":"broken"}')
await createPackage(source, path.join(resources, 'app.asar'))
expect(readPackagedKnowledgeCacheIdentity(root, platform)).toBeNull()
} finally {
await rm(root, { recursive: true, force: true })
}
})
}
})