|
|
|
@@ -56,6 +56,7 @@ test('nothing is needlessly removed from node_modules', async () => {
|
|
|
|
|
prepareEmpty()
|
|
|
|
|
const opts = await testDefaults({
|
|
|
|
|
modulesCacheMaxAge: 0,
|
|
|
|
|
strictPeerDependencies: false,
|
|
|
|
|
})
|
|
|
|
|
const manifest = await addDependenciesToPackage({}, ['using-ajv', 'ajv-keywords@1.5.0'], opts)
|
|
|
|
|
|
|
|
|
@@ -143,7 +144,7 @@ test('the right peer dependency is used in every workspace package', async () =>
|
|
|
|
|
rootDir: path.resolve('project-2'),
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
await mutateModules(importers, await testDefaults({ lockfileOnly: true }))
|
|
|
|
|
await mutateModules(importers, await testDefaults({ lockfileOnly: true, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
const lockfile = await readYamlFile<Lockfile>(path.resolve(WANTED_LOCKFILE))
|
|
|
|
|
|
|
|
|
@@ -161,7 +162,7 @@ test('warning is reported when cannot resolve peer dependency for top-level depe
|
|
|
|
|
|
|
|
|
|
const reporter = jest.fn()
|
|
|
|
|
|
|
|
|
|
await addDependenciesToPackage({}, ['ajv-keywords@1.5.0'], await testDefaults({ reporter }))
|
|
|
|
|
await addDependenciesToPackage({}, ['ajv-keywords@1.5.0'], await testDefaults({ reporter, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
expect(reporter).toHaveBeenCalledWith(
|
|
|
|
|
expect.objectContaining({
|
|
|
|
@@ -315,7 +316,7 @@ test('warning is reported when cannot resolve peer dependency for non-top-level
|
|
|
|
|
|
|
|
|
|
const reporter = jest.fn()
|
|
|
|
|
|
|
|
|
|
await addDependenciesToPackage({}, ['abc-grand-parent-without-c'], await testDefaults({ reporter }))
|
|
|
|
|
await addDependenciesToPackage({}, ['abc-grand-parent-without-c'], await testDefaults({ reporter, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
expect(reporter).toHaveBeenCalledWith(
|
|
|
|
|
expect.objectContaining({
|
|
|
|
@@ -360,7 +361,7 @@ test('warning is reported when bad version of resolved peer dependency for non-t
|
|
|
|
|
|
|
|
|
|
const reporter = jest.fn()
|
|
|
|
|
|
|
|
|
|
await addDependenciesToPackage({}, ['abc-grand-parent-without-c', 'peer-c@2'], await testDefaults({ reporter }))
|
|
|
|
|
await addDependenciesToPackage({}, ['abc-grand-parent-without-c', 'peer-c@2'], await testDefaults({ reporter, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
expect(reporter).toHaveBeenCalledWith(
|
|
|
|
|
expect.objectContaining({
|
|
|
|
@@ -457,9 +458,9 @@ test('top peer dependency is linked on subsequent install', async () => {
|
|
|
|
|
test('top peer dependency is linked on subsequent install, through transitive peer', async () => {
|
|
|
|
|
prepareEmpty()
|
|
|
|
|
|
|
|
|
|
const manifest = await addDependenciesToPackage({}, ['abc-grand-parent@1.0.0'], await testDefaults())
|
|
|
|
|
const manifest = await addDependenciesToPackage({}, ['abc-grand-parent@1.0.0'], await testDefaults({ strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
await addDependenciesToPackage(manifest, ['peer-c@1.0.0'], await testDefaults())
|
|
|
|
|
await addDependenciesToPackage(manifest, ['peer-c@1.0.0'], await testDefaults({ strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
expect(await exists(path.resolve('node_modules/.pnpm/abc-grand-parent@1.0.0_peer-c@1.0.0/node_modules/abc-grand-parent'))).toBeTruthy()
|
|
|
|
|
})
|
|
|
|
@@ -498,9 +499,9 @@ test('the list of transitive peer dependencies is kept up to date', async () =>
|
|
|
|
|
test('top peer dependency is linked on subsequent install. Reverse order', async () => {
|
|
|
|
|
prepareEmpty()
|
|
|
|
|
|
|
|
|
|
const manifest = await addDependenciesToPackage({}, ['abc-parent-with-ab@1.0.0'], await testDefaults())
|
|
|
|
|
const manifest = await addDependenciesToPackage({}, ['abc-parent-with-ab@1.0.0'], await testDefaults({ strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
await addDependenciesToPackage(manifest, ['peer-c@1.0.0'], await testDefaults({ modulesCacheMaxAge: 0 }))
|
|
|
|
|
await addDependenciesToPackage(manifest, ['peer-c@1.0.0'], await testDefaults({ modulesCacheMaxAge: 0, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
expect(await exists(path.resolve('node_modules/.pnpm/abc-parent-with-ab@1.0.0/node_modules/abc-parent-with-ab'))).toBeFalsy()
|
|
|
|
|
expect(await exists(path.resolve('node_modules/.pnpm/abc-parent-with-ab@1.0.0_peer-c@1.0.0/node_modules/abc-parent-with-ab'))).toBeTruthy()
|
|
|
|
@@ -519,7 +520,7 @@ test('peer dependencies are linked when running one named installation', async (
|
|
|
|
|
|
|
|
|
|
prepareEmpty()
|
|
|
|
|
|
|
|
|
|
const manifest = await addDependenciesToPackage({}, ['abc-grand-parent-with-c', 'abc-parent-with-ab', 'peer-c@2.0.0'], await testDefaults())
|
|
|
|
|
const manifest = await addDependenciesToPackage({}, ['abc-grand-parent-with-c', 'abc-parent-with-ab', 'peer-c@2.0.0'], await testDefaults({ strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
const pkgVariationsDir = path.resolve('node_modules/.pnpm/abc@1.0.0')
|
|
|
|
|
|
|
|
|
@@ -542,7 +543,7 @@ test('peer dependencies are linked when running one named installation', async (
|
|
|
|
|
|
|
|
|
|
// this part was failing. See issue: https://github.com/pnpm/pnpm/issues/1201
|
|
|
|
|
await addDistTag({ package: 'peer-a', version: '1.0.1', distTag: 'latest' })
|
|
|
|
|
await install(manifest, await testDefaults({ update: true, depth: 100 }))
|
|
|
|
|
await install(manifest, await testDefaults({ update: true, depth: 100, strictPeerDependencies: false }))
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
test('peer dependencies are linked when running two separate named installations', async () => {
|
|
|
|
@@ -550,8 +551,8 @@ test('peer dependencies are linked when running two separate named installations
|
|
|
|
|
await addDistTag({ package: 'peer-c', version: '1.0.0', distTag: 'latest' })
|
|
|
|
|
prepareEmpty()
|
|
|
|
|
|
|
|
|
|
const manifest = await addDependenciesToPackage({}, ['abc-grand-parent-with-c', 'peer-c@2.0.0'], await testDefaults())
|
|
|
|
|
await addDependenciesToPackage(manifest, ['abc-parent-with-ab'], await testDefaults())
|
|
|
|
|
const manifest = await addDependenciesToPackage({}, ['abc-grand-parent-with-c', 'peer-c@2.0.0'], await testDefaults({ strictPeerDependencies: false }))
|
|
|
|
|
await addDependenciesToPackage(manifest, ['abc-parent-with-ab'], await testDefaults({ strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
const pkgVariationsDir = path.resolve('node_modules/.pnpm/abc@1.0.0')
|
|
|
|
|
|
|
|
|
@@ -685,7 +686,7 @@ test('peer dependency is grouped with dependent when the peer is a top dependenc
|
|
|
|
|
|
|
|
|
|
const reporter = sinon.spy()
|
|
|
|
|
|
|
|
|
|
await addDependenciesToPackage({}, ['ajv@4.10.4', 'ajv-keywords@1.5.0'], await testDefaults({ reporter, lockfileDir: path.resolve('..') }))
|
|
|
|
|
await addDependenciesToPackage({}, ['ajv@4.10.4', 'ajv-keywords@1.5.0'], await testDefaults({ reporter, lockfileDir: path.resolve('..'), strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
expect(reporter.calledWithMatch({
|
|
|
|
|
message: `localhost+${REGISTRY_MOCK_PORT}/ajv-keywords@1.5.0 requires a peer of ajv@>=4.10.0 but none was installed.`,
|
|
|
|
@@ -718,8 +719,8 @@ test('peer dependency is grouped correctly with peer installed via separate inst
|
|
|
|
|
dependencies: {
|
|
|
|
|
abc: '1.0.0',
|
|
|
|
|
},
|
|
|
|
|
}, await testDefaults({ reporter, lockfileDir }))
|
|
|
|
|
await addDependenciesToPackage(manifest, ['peer-c@2.0.0'], await testDefaults({ reporter, lockfileDir }))
|
|
|
|
|
}, await testDefaults({ reporter, lockfileDir, strictPeerDependencies: false }))
|
|
|
|
|
await addDependenciesToPackage(manifest, ['peer-c@2.0.0'], await testDefaults({ reporter, lockfileDir, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
expect(await exists(path.join('../node_modules/.pnpm/abc@1.0.0_peer-c@2.0.0/node_modules/dep-of-pkg-with-1-dep'))).toBeTruthy()
|
|
|
|
|
})
|
|
|
|
@@ -730,7 +731,7 @@ test('peer dependency is grouped with dependent when the peer is a top dependenc
|
|
|
|
|
process.chdir('_')
|
|
|
|
|
const lockfileDir = path.resolve('..')
|
|
|
|
|
|
|
|
|
|
let manifest = await addDependenciesToPackage({}, ['ajv@4.10.4', 'ajv-keywords@1.5.0'], await testDefaults({ lockfileDir }))
|
|
|
|
|
let manifest = await addDependenciesToPackage({}, ['ajv@4.10.4', 'ajv-keywords@1.5.0'], await testDefaults({ lockfileDir, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
const lockfile = await readYamlFile<Lockfile>(path.resolve('..', WANTED_LOCKFILE))
|
|
|
|
@@ -746,7 +747,7 @@ test('peer dependency is grouped with dependent when the peer is a top dependenc
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
manifest = await install(manifest, await testDefaults({ lockfileDir }))
|
|
|
|
|
manifest = await install(manifest, await testDefaults({ lockfileDir, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
const lockfile = await readYamlFile<Lockfile>(path.resolve('..', WANTED_LOCKFILE))
|
|
|
|
@@ -774,6 +775,7 @@ test('peer dependency is grouped with dependent when the peer is a top dependenc
|
|
|
|
|
],
|
|
|
|
|
await testDefaults({
|
|
|
|
|
lockfileDir,
|
|
|
|
|
strictPeerDependencies: false,
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
@@ -835,7 +837,7 @@ test('external lockfile: peer dependency is grouped with dependent even after a
|
|
|
|
|
process.chdir('_')
|
|
|
|
|
const lockfileDir = path.resolve('..')
|
|
|
|
|
|
|
|
|
|
const manifest = await addDependenciesToPackage({}, ['peer-c@1.0.0', 'abc-parent-with-ab@1.0.0'], await testDefaults({ lockfileDir }))
|
|
|
|
|
const manifest = await addDependenciesToPackage({}, ['peer-c@1.0.0', 'abc-parent-with-ab@1.0.0'], await testDefaults({ lockfileDir, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
const lockfile = await readYamlFile<Lockfile>(path.resolve('..', WANTED_LOCKFILE))
|
|
|
|
@@ -851,7 +853,7 @@ test('external lockfile: peer dependency is grouped with dependent even after a
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await addDependenciesToPackage(manifest, ['peer-c@2.0.0'], await testDefaults({ lockfileDir }))
|
|
|
|
|
await addDependenciesToPackage(manifest, ['peer-c@2.0.0'], await testDefaults({ lockfileDir, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
const lockfile = await readYamlFile<Lockfile>(path.resolve('..', WANTED_LOCKFILE))
|
|
|
|
@@ -1004,7 +1006,7 @@ test('warning is not reported when cannot resolve optional peer dependency', asy
|
|
|
|
|
|
|
|
|
|
const reporter = jest.fn()
|
|
|
|
|
|
|
|
|
|
await addDependenciesToPackage({}, ['abc-optional-peers@1.0.0', 'peer-c@2.0.0'], await testDefaults({ reporter }))
|
|
|
|
|
await addDependenciesToPackage({}, ['abc-optional-peers@1.0.0', 'peer-c@2.0.0'], await testDefaults({ reporter, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
expect(reporter).toHaveBeenCalledWith(
|
|
|
|
|
expect.objectContaining({
|
|
|
|
@@ -1076,7 +1078,7 @@ test('warning is not reported when cannot resolve optional peer dependency (spec
|
|
|
|
|
|
|
|
|
|
const reporter = jest.fn()
|
|
|
|
|
|
|
|
|
|
await addDependenciesToPackage({}, ['abc-optional-peers-meta-only@1.0.0', 'peer-c@2.0.0'], await testDefaults({ reporter }))
|
|
|
|
|
await addDependenciesToPackage({}, ['abc-optional-peers-meta-only@1.0.0', 'peer-c@2.0.0'], await testDefaults({ reporter, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
expect(reporter).toHaveBeenCalledWith(
|
|
|
|
|
expect.objectContaining({
|
|
|
|
@@ -1187,7 +1189,7 @@ test('peer dependency that is resolved by a dev dependency', async () => {
|
|
|
|
|
mutation: 'install',
|
|
|
|
|
rootDir: process.cwd(),
|
|
|
|
|
},
|
|
|
|
|
], await testDefaults({ fastUnpack: false, lockfileOnly: true }))
|
|
|
|
|
], await testDefaults({ fastUnpack: false, lockfileOnly: true, strictPeerDependencies: false }))
|
|
|
|
|
|
|
|
|
|
const lockfile = await project.readLockfile()
|
|
|
|
|
expect(lockfile.packages['/@types/mongoose/5.7.32'].dev).toBeTruthy()
|
|
|
|
|