| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import { describe, expect, it } from 'vitest'
- import type { NpmPackageLock, RegistryIndex } from './benchmark-npm-resolution.ts'
- import {
- assertDualDshInstallLayout,
- buildDualDshRegistry,
- } from './verify-npm-install-layout.ts'
- function validLayout(): NpmPackageLock {
- return {
- lockfileVersion: 3,
- packages: {
- '': { dependencies: { '@deepseek-ai/dsh': '0.2.0', 'dsh-previous': 'npm:@deepseek-ai/dsh@0.1.0' } },
- 'node_modules/@deepseek-ai/cordis': { version: '4.0.1' },
- 'node_modules/@deepseek-ai/dsh': {
- version: '0.2.0',
- dependencies: { '@deepseek-ai/dsh-child': '^0.2.0' },
- peerDependencies: { '@deepseek-ai/cordis': '^4.0.1' },
- },
- 'node_modules/@deepseek-ai/dsh-child': {
- version: '0.2.0',
- dependencies: { '@deepseek-ai/dsh-leaf': '^0.2.0' },
- },
- 'node_modules/@deepseek-ai/dsh-leaf': { version: '0.2.0' },
- 'node_modules/dsh-previous': {
- name: '@deepseek-ai/dsh',
- version: '0.1.0',
- dependencies: { '@deepseek-ai/dsh-child': '^0.1.0' },
- peerDependencies: { '@deepseek-ai/cordis': '^4.0.1' },
- },
- 'node_modules/dsh-previous/node_modules/@deepseek-ai/dsh-child': {
- version: '0.1.0',
- dependencies: { '@deepseek-ai/dsh-leaf': '^0.1.0' },
- },
- 'node_modules/dsh-previous/node_modules/@deepseek-ai/dsh-leaf': { version: '0.1.0' },
- },
- }
- }
- describe('npm install layout verifier', () => {
- it('creates two incompatible versions of every DSH package', () => {
- const index: RegistryIndex = new Map([
- ['@deepseek-ai/dsh', new Map([['0.1.1-rc.2', {
- name: '@deepseek-ai/dsh',
- version: '0.1.1-rc.2',
- dependencies: { '@deepseek-ai/dsh-child': '^0.1.1-rc.2' },
- peerDependencies: { '@deepseek-ai/cordis': '^4.0.1' },
- }]])],
- ['@deepseek-ai/dsh-child', new Map([['0.1.1-rc.2', {
- name: '@deepseek-ai/dsh-child',
- version: '0.1.1-rc.2',
- }]])],
- ['@deepseek-ai/cordis', new Map([['4.0.1', {
- name: '@deepseek-ai/cordis',
- version: '4.0.1',
- }]])],
- ])
- const dual = buildDualDshRegistry(index, '0.1.1-rc.2')
- expect([...dual.get('@deepseek-ai/dsh')?.keys() ?? []]).toEqual(['0.1.0', '0.2.0'])
- expect(dual.get('@deepseek-ai/dsh')?.get('0.1.0')).toMatchObject({
- version: '0.1.0',
- dependencies: { '@deepseek-ai/dsh-child': '^0.1.0' },
- peerDependencies: { '@deepseek-ai/cordis': '^4.0.1' },
- })
- expect(dual.get('@deepseek-ai/dsh')?.get('0.2.0')).toMatchObject({
- version: '0.2.0',
- dependencies: { '@deepseek-ai/dsh-child': '^0.2.0' },
- })
- expect(dual.get('@deepseek-ai/cordis')).toBe(index.get('@deepseek-ai/cordis'))
- })
- it('accepts isolated DSH releases with one shared Cordis installation', () => {
- expect(assertDualDshInstallLayout(validLayout())).toEqual({
- dshPackagesPerVersion: 3,
- checkedDshEdges: 4,
- })
- })
- it('rejects an internal edge that crosses release versions', () => {
- const layout = validLayout()
- const packages = { ...layout.packages }
- Reflect.deleteProperty(packages, 'node_modules/dsh-previous/node_modules/@deepseek-ai/dsh-leaf')
- expect(() => assertDualDshInstallLayout({ ...layout, packages })).toThrow(
- 'node_modules/dsh-previous/node_modules/@deepseek-ai/dsh-child: dependencies '
- + '@deepseek-ai/dsh-leaf resolves to node_modules/@deepseek-ai/dsh-leaf@0.2.0, expected 0.1.0',
- )
- })
- it('rejects a second Cordis installation', () => {
- const layout = validLayout()
- const packages = {
- ...layout.packages,
- 'node_modules/dsh-previous/node_modules/@deepseek-ai/cordis': { version: '4.0.1' },
- }
- expect(() => assertDualDshInstallLayout({ ...layout, packages })).toThrow(
- 'expected one shared @deepseek-ai/cordis',
- )
- })
- })
|