| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import { afterEach, describe, expect, it, vi } from 'vitest'
- import {
- assertDesktopHostPackageFiles,
- selectDesktopPackageClosure,
- type PackedDesktopPackage,
- } from '../scripts/prepare-package-set.ts'
- function packed(name: string, manifest: Record<string, unknown> = {}): PackedDesktopPackage {
- return { tarball: `${name}.tgz`, manifest: { name, version: '1.0.0', ...manifest } }
- }
- describe('desktop package-set selection', () => {
- afterEach(() => {
- vi.unstubAllEnvs()
- })
- it('does not select a packaging target when imported as a library', async () => {
- vi.stubEnv('DSH_DESKTOP_TARGET_PLATFORM', 'linux')
- vi.stubEnv('DSH_DESKTOP_TARGET_ARCH', 'x64')
- vi.resetModules()
- await expect(import('../scripts/prepare-package-set.ts')).resolves.toHaveProperty('prepareDesktopPackageSet')
- })
- it('includes only the available internal production closure', () => {
- const available = new Map<string, PackedDesktopPackage>([
- ['@deepseek-ai/dsh', packed('@deepseek-ai/dsh', {
- dependencies: { '@deepseek-ai/dsh-base': '^1.0.0', external: '^2.0.0' },
- optionalDependencies: { '@deepseek-ai/platform-package': '1.0.0', '@deepseek-ai/missing-platform': '1.0.0' },
- })],
- ['@deepseek-ai/dsh-desktop-host', packed('@deepseek-ai/dsh-desktop-host', {
- dependencies: { '@deepseek-ai/dsh': '^1.0.0' },
- })],
- ['@deepseek-ai/dsh-base', packed('@deepseek-ai/dsh-base', {
- peerDependencies: { '@deepseek-ai/cordis': '^1.0.0' },
- })],
- ['@deepseek-ai/cordis', packed('@deepseek-ai/cordis')],
- ['@deepseek-ai/platform-package', packed('@deepseek-ai/platform-package')],
- ['@deepseek-ai/unused', packed('@deepseek-ai/unused')],
- ])
- expect(selectDesktopPackageClosure(available).map(entry => entry.manifest.name)).toEqual([
- '@deepseek-ai/cordis',
- '@deepseek-ai/dsh',
- '@deepseek-ai/dsh-base',
- '@deepseek-ai/dsh-desktop-host',
- '@deepseek-ai/platform-package',
- ])
- })
- it('rejects a required internal package absent from the packed release inputs', () => {
- const available = new Map<string, PackedDesktopPackage>([
- ['@deepseek-ai/dsh', packed('@deepseek-ai/dsh', {
- dependencies: { '@deepseek-ai/dsh-base': '^1.0.0' },
- })],
- ['@deepseek-ai/dsh-desktop-host', packed('@deepseek-ai/dsh-desktop-host', {
- dependencies: { '@deepseek-ai/dsh': '^1.0.0' },
- })],
- ])
- expect(() => selectDesktopPackageClosure(available)).toThrow(/unpacked internal package/u)
- expect(() => selectDesktopPackageClosure(new Map([
- ['@deepseek-ai/dsh', packed('@deepseek-ai/dsh')],
- ]))).toThrow(/omit @deepseek-ai\/dsh-desktop-host/u)
- })
- it('requires the Desktop Host entry and its packaged overlay', () => {
- const files = [
- 'package/lib/index.js',
- 'package/config/desktop.cordis.patch.yml',
- ]
- expect(() => {
- assertDesktopHostPackageFiles(files)
- }).not.toThrow()
- expect(() => {
- assertDesktopHostPackageFiles(files.slice(0, 1))
- }).toThrow(/desktop\.cordis\.patch\.yml/u)
- expect(() => {
- assertDesktopHostPackageFiles(files.slice(1))
- }).toThrow(/lib\/index\.js/u)
- })
- })
|