mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-28 02:53:15 -04:00
Add eslint-plugin-simple-import-sort to enforce consistent import ordering: - Node.js builtins first - External packages second - Relative imports last - Named imports sorted alphabetically within each statement
131 lines
3.2 KiB
TypeScript
131 lines
3.2 KiB
TypeScript
import type { BaseManifest } from '@pnpm/types'
|
|
|
|
import { createOptionalDependenciesRemover } from '../lib/createOptionalDependenciesRemover.js'
|
|
|
|
test('createOptionalDependenciesRemover() does not modify the manifest if provided array is empty', async () => {
|
|
const removeOptionalDependencies = createOptionalDependenciesRemover([])
|
|
const manifest: BaseManifest = Object.freeze({
|
|
dependencies: {
|
|
foo: '0.1.2',
|
|
bar: '2.1.0',
|
|
baz: '1.0.0',
|
|
qux: '2.0.0',
|
|
},
|
|
optionalDependencies: {
|
|
foo: '0.1.2',
|
|
bar: '2.1.0',
|
|
baz: '1.0.0',
|
|
},
|
|
})
|
|
expect(await removeOptionalDependencies(manifest)).toBe(manifest)
|
|
})
|
|
|
|
test('createOptionalDependenciesRemover() removes optional dependencies', async () => {
|
|
const removeOptionalDependencies = createOptionalDependenciesRemover(['foo', 'bar'])
|
|
expect(
|
|
await removeOptionalDependencies({
|
|
dependencies: {
|
|
foo: '0.1.2',
|
|
bar: '2.1.0',
|
|
baz: '1.0.0',
|
|
qux: '2.0.0',
|
|
},
|
|
optionalDependencies: {
|
|
foo: '0.1.2',
|
|
bar: '2.1.0',
|
|
baz: '1.0.0',
|
|
},
|
|
})
|
|
).toStrictEqual({
|
|
dependencies: {
|
|
baz: '1.0.0',
|
|
qux: '2.0.0',
|
|
},
|
|
optionalDependencies: {
|
|
baz: '1.0.0',
|
|
},
|
|
})
|
|
})
|
|
|
|
test('createOptionalDependenciesRemover() does not remove non-optional packages', async () => {
|
|
const removeOptionalDependencies = createOptionalDependenciesRemover(['foo', 'bar'])
|
|
expect(
|
|
await removeOptionalDependencies({
|
|
dependencies: {
|
|
foo: '0.1.2',
|
|
bar: '2.1.0',
|
|
baz: '1.0.0',
|
|
qux: '2.0.0',
|
|
},
|
|
optionalDependencies: {
|
|
foo: '0.1.2',
|
|
baz: '1.0.0',
|
|
},
|
|
})
|
|
).toStrictEqual({
|
|
dependencies: {
|
|
bar: '2.1.0',
|
|
baz: '1.0.0',
|
|
qux: '2.0.0',
|
|
},
|
|
optionalDependencies: {
|
|
baz: '1.0.0',
|
|
},
|
|
})
|
|
})
|
|
|
|
test('createOptionalDependenciesRemover() removes all optional dependencies if the pattern is a star', async () => {
|
|
const removeOptionalDependencies = createOptionalDependenciesRemover(['*'])
|
|
expect(
|
|
await removeOptionalDependencies({
|
|
dependencies: {
|
|
foo: '0.1.2',
|
|
bar: '2.1.0',
|
|
baz: '1.0.0',
|
|
qux: '2.0.0',
|
|
},
|
|
optionalDependencies: {
|
|
foo: '0.1.2',
|
|
bar: '2.1.0',
|
|
baz: '1.0.0',
|
|
},
|
|
})
|
|
).toStrictEqual({
|
|
dependencies: {
|
|
qux: '2.0.0',
|
|
},
|
|
optionalDependencies: {},
|
|
})
|
|
})
|
|
|
|
test('createOptionalDependenciesRemover() only removes optional dependencies that match one of the patterns', async () => {
|
|
const removeOptionalDependencies = createOptionalDependenciesRemover(['@foo/*', '@bar/*'])
|
|
expect(
|
|
await removeOptionalDependencies({
|
|
dependencies: {
|
|
'@foo/abc': '0.0.0',
|
|
'@foo/def': '0.0.0',
|
|
'@foo/not-optional': '0.0.0',
|
|
'@bar/ghi': '0.0.0',
|
|
'@bar/required': '0.0.0',
|
|
'@baz/jkl': '0.0.0',
|
|
},
|
|
optionalDependencies: {
|
|
'@foo/abc': '0.0.0',
|
|
'@foo/def': '0.0.0',
|
|
'@bar/ghi': '0.0.0',
|
|
'@baz/jkl': '0.0.0',
|
|
},
|
|
})
|
|
).toStrictEqual({
|
|
dependencies: {
|
|
'@foo/not-optional': '0.0.0',
|
|
'@bar/required': '0.0.0',
|
|
'@baz/jkl': '0.0.0',
|
|
},
|
|
optionalDependencies: {
|
|
'@baz/jkl': '0.0.0',
|
|
},
|
|
})
|
|
})
|