Files
deepseek-harness/packages/boot/plugin-manager/tests/versions.spec.ts
T

21 lines
1.3 KiB
TypeScript

/** Reading `pnpm view` answers about published versions. */
import { expect, it } from 'vitest'
import { newerVersions, versionFacts } from '../src/versions.ts'
it('reads one version\'s manifest, keeping the asked identity when the answer omits it', () => {
const bundle = { bundle: { patch: './p.yml' } }
expect(versionFacts({ name: 'x', version: '1.0.0', engines: { dsh: '>=1' }, peerDependencies: { a: '1' }, deprecated: 'old', dsh: bundle }, 'y', '2.0.0')).toEqual({
manifest: { name: 'x', version: '1.0.0', engines: { dsh: '>=1' }, peerDependencies: { a: '1' } }, bundle: true, deprecated: 'old',
})
expect(versionFacts({ dsh: { bundle: 'no' }, deprecated: '' }, 'y', '2.0.0')).toEqual({ manifest: { name: 'y', version: '2.0.0' }, bundle: false })
expect(versionFacts('scalar', 'y', '2.0.0')).toEqual({ manifest: { name: 'y', version: '2.0.0' }, bundle: false })
})
it('orders newer semver versions newest first and ignores time and tags that are not objects', () => {
expect(newerVersions({ versions: ['1.0.0', '1.10.0', '1.2.0', 7], time: 'x', 'dist-tags': [] }, '1.0.0')).toEqual([
{ version: '1.10.0', tags: [], prerelease: false },
{ version: '1.2.0', tags: [], prerelease: false },
])
expect(() => newerVersions(null, '1.0.0')).toThrow('pnpm view answered no versions')
})