Files
pnpm/pnpm11/engine/runtime/node-resolver/test/resolveNodeVersions.test.ts
Zoltan Kochan b6b1162e13 fix(runtime): normalize blank runtime selectors (#12576)
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.
2026-06-22 15:33:29 +02:00

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)
})