mirror of
https://github.com/pnpm/pnpm.git
synced 2026-05-11 09:28:24 -04:00
183 lines
4.7 KiB
TypeScript
183 lines
4.7 KiB
TypeScript
import path from 'path'
|
|
import {
|
|
existsWantedLockfile,
|
|
readCurrentLockfile,
|
|
readWantedLockfile,
|
|
writeCurrentLockfile,
|
|
writeWantedLockfile,
|
|
} from '@pnpm/lockfile-file'
|
|
import tempy from 'tempy'
|
|
|
|
process.chdir(__dirname)
|
|
|
|
test('readWantedLockfile()', async () => {
|
|
{
|
|
const lockfile = await readWantedLockfile(path.join('fixtures', '2'), {
|
|
ignoreIncompatible: false,
|
|
})
|
|
expect(lockfile!.lockfileVersion).toEqual(3)
|
|
}
|
|
|
|
try {
|
|
await readWantedLockfile(path.join('fixtures', '3'), {
|
|
ignoreIncompatible: false,
|
|
wantedVersion: 3,
|
|
})
|
|
fail()
|
|
} catch (err: any) { // eslint-disable-line
|
|
expect(err.code).toEqual('ERR_PNPM_LOCKFILE_BREAKING_CHANGE')
|
|
}
|
|
})
|
|
|
|
test('readWantedLockfile() when lockfileVersion is a string', async () => {
|
|
{
|
|
const lockfile = await readWantedLockfile(path.join('fixtures', '4'), {
|
|
ignoreIncompatible: false,
|
|
wantedVersion: 3,
|
|
})
|
|
expect(lockfile!.lockfileVersion).toEqual('v3')
|
|
}
|
|
|
|
{
|
|
const lockfile = await readWantedLockfile(path.join('fixtures', '5'), {
|
|
ignoreIncompatible: false,
|
|
wantedVersion: 3,
|
|
})
|
|
expect(lockfile!.lockfileVersion).toEqual('3')
|
|
}
|
|
})
|
|
|
|
test('readCurrentLockfile()', async () => {
|
|
const lockfile = await readCurrentLockfile('fixtures/2/node_modules/.pnpm', {
|
|
ignoreIncompatible: false,
|
|
})
|
|
expect(lockfile!.lockfileVersion).toEqual(3)
|
|
})
|
|
|
|
test('writeWantedLockfile()', async () => {
|
|
const projectPath = tempy.directory()
|
|
const wantedLockfile = {
|
|
importers: {
|
|
'.': {
|
|
dependencies: {
|
|
'is-negative': '1.0.0',
|
|
'is-positive': '1.0.0',
|
|
},
|
|
specifiers: {
|
|
'is-negative': '^1.0.0',
|
|
'is-positive': '^1.0.0',
|
|
},
|
|
},
|
|
},
|
|
lockfileVersion: 3,
|
|
packages: {
|
|
'/is-negative/1.0.0': {
|
|
dependencies: {
|
|
'is-positive': '2.0.0',
|
|
},
|
|
resolution: {
|
|
integrity: 'sha1-ChbBDewTLAqLCzb793Fo5VDvg/g=',
|
|
},
|
|
},
|
|
'/is-positive/1.0.0': {
|
|
resolution: {
|
|
integrity: 'sha1-ChbBDewTLAqLCzb793Fo5VDvg/g=',
|
|
},
|
|
},
|
|
'/is-positive/2.0.0': {
|
|
resolution: {
|
|
integrity: 'sha1-ChbBDewTLAqLCzb793Fo5VDvg/g=',
|
|
},
|
|
},
|
|
},
|
|
registry: 'https://registry.npmjs.org',
|
|
}
|
|
await writeWantedLockfile(projectPath, wantedLockfile)
|
|
expect(await readCurrentLockfile(projectPath, { ignoreIncompatible: false })).toBeNull()
|
|
expect(await readWantedLockfile(projectPath, { ignoreIncompatible: false })).toEqual(wantedLockfile)
|
|
})
|
|
|
|
test('writeCurrentLockfile()', async () => {
|
|
const projectPath = tempy.directory()
|
|
const wantedLockfile = {
|
|
importers: {
|
|
'.': {
|
|
dependencies: {
|
|
'is-negative': '1.0.0',
|
|
'is-positive': '1.0.0',
|
|
},
|
|
specifiers: {
|
|
'is-negative': '^1.0.0',
|
|
'is-positive': '^1.0.0',
|
|
},
|
|
},
|
|
},
|
|
lockfileVersion: 3,
|
|
packages: {
|
|
'/is-negative/1.0.0': {
|
|
dependencies: {
|
|
'is-positive': '2.0.0',
|
|
},
|
|
resolution: {
|
|
integrity: 'sha1-ChbBDewTLAqLCzb793Fo5VDvg/g=',
|
|
},
|
|
},
|
|
'/is-positive/1.0.0': {
|
|
resolution: {
|
|
integrity: 'sha1-ChbBDewTLAqLCzb793Fo5VDvg/g=',
|
|
},
|
|
},
|
|
'/is-positive/2.0.0': {
|
|
resolution: {
|
|
integrity: 'sha1-ChbBDewTLAqLCzb793Fo5VDvg/g=',
|
|
},
|
|
},
|
|
},
|
|
registry: 'https://registry.npmjs.org',
|
|
}
|
|
await writeCurrentLockfile(projectPath, wantedLockfile)
|
|
expect(await readWantedLockfile(projectPath, { ignoreIncompatible: false })).toBeNull()
|
|
expect(await readCurrentLockfile(projectPath, { ignoreIncompatible: false })).toEqual(wantedLockfile)
|
|
})
|
|
|
|
test('existsWantedLockfile()', async () => {
|
|
const projectPath = tempy.directory()
|
|
expect(await existsWantedLockfile(projectPath)).toBe(false)
|
|
await writeWantedLockfile(projectPath, {
|
|
importers: {
|
|
'.': {
|
|
dependencies: {
|
|
'is-negative': '1.0.0',
|
|
'is-positive': '1.0.0',
|
|
},
|
|
specifiers: {
|
|
'is-negative': '^1.0.0',
|
|
'is-positive': '^1.0.0',
|
|
},
|
|
},
|
|
},
|
|
lockfileVersion: 3,
|
|
packages: {
|
|
'/is-negative/1.0.0': {
|
|
dependencies: {
|
|
'is-positive': '2.0.0',
|
|
},
|
|
resolution: {
|
|
integrity: 'sha1-ChbBDewTLAqLCzb793Fo5VDvg/g=',
|
|
},
|
|
},
|
|
'/is-positive/1.0.0': {
|
|
resolution: {
|
|
integrity: 'sha1-ChbBDewTLAqLCzb793Fo5VDvg/g=',
|
|
},
|
|
},
|
|
'/is-positive/2.0.0': {
|
|
resolution: {
|
|
integrity: 'sha1-ChbBDewTLAqLCzb793Fo5VDvg/g=',
|
|
},
|
|
},
|
|
},
|
|
})
|
|
expect(await existsWantedLockfile(projectPath)).toBe(true)
|
|
})
|