mirror of
https://github.com/pnpm/pnpm.git
synced 2026-06-28 09:55:39 -04:00
Normalize blank and whitespace-only runtime selectors consistently in pnpm and pacquet. The runtime command can produce `runtime:` when no version is provided, and hand-edited manifests may contain whitespace-only selectors. Treat those cases as `latest` in the TypeScript runtime resolvers, the pacquet runtime resolvers, and the manifest conversion helpers. Also make manifest writeback reject malformed dependency fields before pruning managed runtime entries. This prevents a non-object dependency field from being interpreted as a removed runtime dependency and causing silent data loss during save.
27 lines
928 B
TypeScript
27 lines
928 B
TypeScript
import { expect, test } from '@jest/globals'
|
|
import { resolveNodeVersions } from '@pnpm/engine.runtime.node-resolver'
|
|
import { createFetchFromRegistry } from '@pnpm/network.fetch'
|
|
|
|
const fetch = createFetchFromRegistry({})
|
|
|
|
test('resolve specified version list', async () => {
|
|
const versions = await resolveNodeVersions(fetch, '16')
|
|
expect(versions.length).toBeGreaterThan(1)
|
|
expect(versions.every(version => version.match(/^16.+/))).toBeTruthy()
|
|
})
|
|
|
|
test('resolve latest version', async () => {
|
|
const versions = await resolveNodeVersions(fetch, 'latest')
|
|
expect(versions).toHaveLength(1)
|
|
})
|
|
|
|
test.each(['', ' '])('resolve blank version list as latest (%j)', async (spec) => {
|
|
const versions = await resolveNodeVersions(fetch, spec)
|
|
expect(versions).toHaveLength(1)
|
|
})
|
|
|
|
test('resolve all versions', async () => {
|
|
const versions = await resolveNodeVersions(fetch)
|
|
expect(versions.length).toBeGreaterThan(1)
|
|
})
|