Files
pnpm/pkg-manager/core/test/install/stats.ts
2025-08-22 21:56:49 +02:00

59 lines
1.5 KiB
TypeScript

import { prepareEmpty } from '@pnpm/prepare'
import {
mutateModules,
type MutatedProject,
} from '@pnpm/core'
import { type ProjectRootDir } from '@pnpm/types'
import { sync as rimraf } from '@zkochan/rimraf'
import { testDefaults } from '../utils/index.js'
test('spec not specified in package.json.dependencies', async () => {
prepareEmpty()
const importers: MutatedProject[] = [
{
mutation: 'install',
rootDir: process.cwd() as ProjectRootDir,
},
]
const allProjects = [
{
buildIndex: 0,
manifest: {
name: 'project-1',
version: '1.0.0',
dependencies: {
'is-positive': '1.0.0',
},
},
rootDir: process.cwd() as ProjectRootDir,
},
]
{
const { stats } = await mutateModules(importers, testDefaults({ allProjects }))
expect(stats.added).toBe(1)
expect(stats.removed).toBe(0)
expect(stats.linkedToRoot).toBe(1)
}
rimraf('node_modules')
{
const { stats } = await mutateModules(importers, testDefaults({ allProjects, frozenLockfile: true }))
expect(stats.added).toBe(1)
expect(stats.removed).toBe(0)
expect(stats.linkedToRoot).toBe(1)
}
{
const { stats } = await mutateModules([
{
mutation: 'uninstallSome',
dependencyNames: ['is-positive'],
rootDir: process.cwd() as ProjectRootDir,
},
], testDefaults({ allProjects, frozenLockfile: true }))
expect(stats.added).toBe(0)
expect(stats.removed).toBe(1)
expect(stats.linkedToRoot).toBe(0)
}
})