| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- import { describe, expect, it } from 'vitest'
- import {
- applyFactsToRegistry,
- discoverBenchmarkCandidates,
- parseNextPackageBenchmarkOptions,
- type MutableRegistryManifest,
- } from './benchmark-next-package-dependency.ts'
- import type {
- PackageDependencyFacts,
- PackageDependencyManifest,
- WorkspacePackageManifest,
- } from './verify-package-dependencies.ts'
- import type { RegistryIndex } from './benchmark-npm-resolution.ts'
- describe('next package benchmark options', () => {
- it('parses candidate and repetition controls', () => {
- expect(parseNextPackageBenchmarkOptions([
- '--',
- '--candidates=@f/a,@f/b',
- '--runs=2',
- '--finalist-runs=4',
- '--finalists=3',
- '--jobs=6',
- '--timeout-ms=9000',
- ])).toEqual({
- candidates: ['@f/a', '@f/b'],
- coarseRuns: 2,
- finalistRuns: 4,
- finalists: 3,
- jobs: 6,
- timeoutMs: 9000,
- })
- })
- it('rejects invalid positive integers', () => {
- expect(() => parseNextPackageBenchmarkOptions(['--jobs=0'])).toThrow('--jobs must be a positive integer')
- })
- })
- describe('next package benchmark graph', () => {
- it('applies a source-derived candidate without changing the filesystem', () => {
- const manifest: PackageDependencyManifest & { version: string } = {
- name: '@f/probe',
- version: '1.0.0',
- peerDependencies: {
- '@deepseek-ai/cordis': 'workspace:^',
- '@f/runtime': 'workspace:^',
- '@f/types': 'workspace:^',
- },
- devDependencies: {
- '@deepseek-ai/cordis': 'workspace:^',
- '@f/runtime': 'workspace:^',
- '@f/types': 'workspace:^',
- },
- }
- const facts: PackageDependencyFacts = {
- manifestPath: 'packages/g/probe/package.json',
- role: 'configured-host',
- manifest,
- workspaceNames: new Set(['@deepseek-ai/cordis', '@f/probe', '@f/runtime', '@f/types']),
- allSourceUses: new Map([
- ['@f/runtime', ['packages/g/probe/src/index.ts']],
- ['@f/types', ['packages/g/probe/src/types.ts']],
- ]),
- hostRuntimeSourceUses: new Map([['@f/runtime', ['packages/g/probe/src/index.ts']]]),
- hostRuntimeExportUses: [{
- packageName: '@f/runtime',
- specifier: '@f/runtime',
- exportName: 'runtimeValue',
- sourcePath: 'packages/g/probe/src/index.ts',
- line: 1,
- column: 10,
- sourceLine: "import { runtimeValue } from '@f/runtime'",
- }],
- peerRequiredHostDependencies: new Set(),
- configurationOnlyDevDependencies: new Set(),
- clientInject: new Set(),
- }
- const index = new Map<string, Map<string, MutableRegistryManifest>>([
- ['@f/probe', new Map([['1.0.0', structuredClone(manifest) as MutableRegistryManifest]])],
- ])
- applyFactsToRegistry(index, facts, new Map([
- ['@deepseek-ai/cordis', '4.0.1'],
- ['@f/probe', '1.0.0'],
- ['@f/runtime', '2.0.0'],
- ['@f/types', '3.0.0'],
- ]))
- expect(index.get('@f/probe')?.get('1.0.0')).toMatchObject({
- dependencies: { '@f/runtime': '^2.0.0' },
- peerDependencies: { '@deepseek-ai/cordis': '^4.0.1' },
- })
- expect(index.get('@f/probe')?.get('1.0.0')?.dependencies).not.toHaveProperty('@f/types')
- })
- it('finds reachable unconfigured packages with non-Cordis peers', () => {
- const index = new Map([
- ['@deepseek-ai/dsh', new Map([['1.0.0', {
- name: '@deepseek-ai/dsh', version: '1.0.0', dependencies: { '@f/a': '^1.0.0', '@f/b': '^1.0.0' },
- }]])],
- ['@f/a', new Map([['1.0.0', {
- name: '@f/a', version: '1.0.0', peerDependencies: { '@f/runtime': '^1.0.0' },
- }]])],
- ['@f/b', new Map([['1.0.0', {
- name: '@f/b', version: '1.0.0', peerDependencies: { '@deepseek-ai/cordis': '^4.0.0' },
- }]])],
- ['@f/runtime', new Map([['1.0.0', { name: '@f/runtime', version: '1.0.0' }]])],
- ]) as RegistryIndex
- const release = new Map<string, WorkspacePackageManifest>([
- ['@f/a', {
- name: '@f/a', dir: 'packages/g/a', manifestPath: 'packages/g/a/package.json', manifest: { name: '@f/a' },
- }],
- ['@f/b', {
- name: '@f/b', dir: 'packages/g/b', manifestPath: 'packages/g/b/package.json', manifest: { name: '@f/b' },
- }],
- ])
- expect(discoverBenchmarkCandidates(
- index,
- new Map([['@deepseek-ai/dsh', '1.0.0'], ['@f/a', '1.0.0'], ['@f/b', '1.0.0']]),
- release,
- new Set(),
- )).toEqual(['@f/a'])
- })
- })
|