| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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.each([
- '@deepseek-ai/dsh-base', '@deepseek-ai/cordis', '@deepseek-ai/node-addon-system',
- ])('rejects required prepared package %s absent from the packed release inputs', (dependency) => {
- const available = new Map<string, PackedDesktopPackage>([
- ['@deepseek-ai/dsh', packed('@deepseek-ai/dsh', {
- dependencies: { [dependency]: '^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 package/u)
- expect(() => selectDesktopPackageClosure(new Map([
- ['@deepseek-ai/dsh', packed('@deepseek-ai/dsh')],
- ]))).toThrow(/omit @deepseek-ai\/dsh-desktop-host/u)
- })
- it('leaves independently published Office packages to npm resolution', () => {
- const available = new Map<string, PackedDesktopPackage>([
- ['@deepseek-ai/dsh', packed('@deepseek-ai/dsh', {
- dependencies: {
- '@deepseek-ai/libreoffice-kit': '0.0.1',
- '@deepseek-ai/libreoffice-kit-wasm': '0.0.1',
- },
- })],
- ['@deepseek-ai/dsh-desktop-host', packed('@deepseek-ai/dsh-desktop-host')],
- ])
- expect(selectDesktopPackageClosure(available).map(entry => entry.manifest.name)).toEqual([
- '@deepseek-ai/dsh', '@deepseek-ai/dsh-desktop-host',
- ])
- })
- it('requires the Desktop Host entry', () => {
- const files = [
- 'package/lib/index.js',
- ]
- expect(() => {
- assertDesktopHostPackageFiles(files)
- }).not.toThrow()
- expect(() => {
- assertDesktopHostPackageFiles(files.slice(1))
- }).toThrow(/lib\/index\.js/u)
- })
- })
|