mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
89 lines
3.4 KiB
TypeScript
89 lines
3.4 KiB
TypeScript
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs'
|
|
import { tmpdir } from 'node:os'
|
|
import { join } from 'node:path'
|
|
import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
import { spawnSync } from 'node:child_process'
|
|
import { afterEach, describe, expect, it } from 'vitest'
|
|
|
|
const verifier = fileURLToPath(new URL('./verify-built-package-invariants.mjs', import.meta.url))
|
|
const roots: string[] = []
|
|
|
|
afterEach(() => {
|
|
for (const root of roots.splice(0)) rmSync(root, { recursive: true, force: true })
|
|
})
|
|
|
|
function fixture(options: {
|
|
invariantSource?: string
|
|
invariantExport?: string
|
|
runtimeChunk?: string
|
|
} = {}): { root: string; loaderUrl: string } {
|
|
const root = mkdtempSync(join(tmpdir(), 'dsh-built-package-invariants-'))
|
|
roots.push(root)
|
|
const packageDir = join(root, 'packages/core/probe')
|
|
mkdirSync(join(packageDir, 'lib'), { recursive: true })
|
|
writeFileSync(join(packageDir, 'package.json'), `${JSON.stringify({
|
|
name: '@deepseek-ai/dsh-probe',
|
|
type: 'module',
|
|
files: ['lib/invariant.js'],
|
|
exports: {
|
|
'./invariant': {
|
|
default: options.invariantExport ?? './lib/invariant.js',
|
|
},
|
|
},
|
|
}, null, 2)}\n`)
|
|
writeFileSync(
|
|
join(packageDir, 'lib/invariant.js'),
|
|
options.invariantSource ?? "export const name = 'probe-invariant'\nexport const inject = ['invariants']\nexport const apply = () => {}\n",
|
|
)
|
|
if (options.runtimeChunk !== undefined) {
|
|
writeFileSync(join(packageDir, 'lib/chunk.js'), options.runtimeChunk)
|
|
}
|
|
const loaderPath = join(root, 'loader.mjs')
|
|
writeFileSync(loaderPath, 'export default class Loader { unwrapExports(value) { return value } }\n')
|
|
return { root, loaderUrl: pathToFileURL(loaderPath).href }
|
|
}
|
|
|
|
function verify(root: string, loaderUrl: string) {
|
|
return spawnSync(process.execPath, [
|
|
verifier,
|
|
'--packages-root', root,
|
|
'--loader-url', loaderUrl,
|
|
], {
|
|
encoding: 'utf8',
|
|
timeout: 5_000,
|
|
})
|
|
}
|
|
|
|
describe('built package invariant verifier', () => {
|
|
it('loads the staged compiled self-reference through plain Node and Loader normalization', () => {
|
|
const { root, loaderUrl } = fixture()
|
|
const result = verify(root, loaderUrl)
|
|
expect(result.status, result.stderr).toBe(0)
|
|
expect(result.stdout).toContain('1 compiled companion(s) passed plain-Node Loader checks')
|
|
})
|
|
|
|
it('rejects a default export and a broken invariant export map', () => {
|
|
const withDefault = fixture({
|
|
invariantSource: "export default {}\nexport const name = 'probe-invariant'\nexport const inject = ['invariants']\nexport const apply = () => {}\n",
|
|
})
|
|
const defaultResult = verify(withDefault.root, withDefault.loaderUrl)
|
|
expect(defaultResult.status).toBe(1)
|
|
expect(defaultResult.stderr).toContain('companion has a default export')
|
|
|
|
const brokenExport = fixture({ invariantExport: './lib/missing.js' })
|
|
const exportResult = verify(brokenExport.root, brokenExport.loaderUrl)
|
|
expect(exportResult.status).toBe(1)
|
|
expect(exportResult.stderr).toContain('@deepseek-ai/dsh-probe')
|
|
})
|
|
|
|
it('rejects an invariant bundle that needs an unstaged runtime chunk', () => {
|
|
const { root, loaderUrl } = fixture({
|
|
invariantSource: "export * from './chunk.js'\n",
|
|
runtimeChunk: "export const name = 'probe-invariant'\nexport const inject = ['invariants']\nexport const apply = () => {}\n",
|
|
})
|
|
const result = verify(root, loaderUrl)
|
|
expect(result.status).toBe(1)
|
|
expect(result.stderr).toContain('chunk.js')
|
|
})
|
|
})
|