Files
pnpm/workspace/resolve-workspace-range/test/index.test.ts
Shunta Takemoto 0625e20442 feat: treat bare workspace: protocol as workspace:* (#10436)
* feat: treat bare `workspace:` protocol as `workspace:*`

* chore: add chageset

* test(exportable-manifest): add test for `workspace` with explicit versions

* test: add tests and update changesets

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2026-01-26 07:06:01 +01:00

32 lines
1.1 KiB
TypeScript

import { resolveWorkspaceRange } from '@pnpm/resolve-workspace-range'
describe('resolveWorkspaceRange', () => {
const versions = ['1.0.0', '2.0.0', '3.0.0-beta.1']
test('resolves * to max version including prereleases', () => {
expect(resolveWorkspaceRange('*', versions)).toBe('3.0.0-beta.1')
})
test('resolves ^ to max version including prereleases', () => {
expect(resolveWorkspaceRange('^', versions)).toBe('3.0.0-beta.1')
})
test('resolves ~ to max version including prereleases', () => {
expect(resolveWorkspaceRange('~', versions)).toBe('3.0.0-beta.1')
})
test('resolves empty string (bare workspace:) to max version including prereleases', () => {
expect(resolveWorkspaceRange('', versions)).toBe('3.0.0-beta.1')
})
test('resolves semver range', () => {
expect(resolveWorkspaceRange('^1.0.0', versions)).toBe('1.0.0')
expect(resolveWorkspaceRange('^2.0.0', versions)).toBe('2.0.0')
expect(resolveWorkspaceRange('>=1.0.0', versions)).toBe('2.0.0')
})
test('returns null when no version satisfies range', () => {
expect(resolveWorkspaceRange('^4.0.0', versions)).toBeNull()
})
})