mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-27 18:46:18 -04:00
Add n/prefer-node-protocol rule and autofix all bare builtin imports to use the node: prefix. Simplify the simple-import-sort builtins pattern to just ^node: since all imports now use the prefix.
89 lines
2.6 KiB
TypeScript
89 lines
2.6 KiB
TypeScript
import path from 'node:path'
|
|
|
|
import { jest } from '@jest/globals'
|
|
import { logger } from '@pnpm/logger'
|
|
import { preparePackages } from '@pnpm/prepare'
|
|
import type { ProjectRootDir } from '@pnpm/types'
|
|
|
|
import { loadWorkspaceState, updateWorkspaceState } from '../src/index.js'
|
|
|
|
const originalLoggerDebug = logger.debug
|
|
afterEach(() => {
|
|
logger.debug = originalLoggerDebug
|
|
})
|
|
|
|
test('updateWorkspaceState()', async () => {
|
|
preparePackages(['a', 'b', 'c', 'd'].map(name => ({
|
|
location: `./packages/${name}`,
|
|
package: { name },
|
|
})))
|
|
|
|
const workspaceDir = process.cwd()
|
|
|
|
expect(loadWorkspaceState(workspaceDir)).toBeUndefined()
|
|
|
|
logger.debug = jest.fn(originalLoggerDebug)
|
|
await updateWorkspaceState({
|
|
pnpmfiles: [],
|
|
workspaceDir,
|
|
allProjects: [],
|
|
filteredInstall: false,
|
|
settings: {
|
|
autoInstallPeers: true,
|
|
dedupeDirectDeps: true,
|
|
excludeLinksFromLockfile: false,
|
|
preferWorkspacePackages: false,
|
|
linkWorkspacePackages: false,
|
|
injectWorkspacePackages: false,
|
|
},
|
|
})
|
|
expect(jest.mocked(logger.debug).mock.calls).toStrictEqual([[{ msg: 'updating workspace state' }]])
|
|
expect(loadWorkspaceState(workspaceDir)).toStrictEqual(expect.objectContaining({
|
|
lastValidatedTimestamp: expect.any(Number),
|
|
projects: {},
|
|
}))
|
|
|
|
logger.debug = jest.fn(originalLoggerDebug)
|
|
await updateWorkspaceState({
|
|
pnpmfiles: [],
|
|
workspaceDir,
|
|
settings: {
|
|
autoInstallPeers: true,
|
|
dedupeDirectDeps: true,
|
|
excludeLinksFromLockfile: false,
|
|
preferWorkspacePackages: false,
|
|
injectWorkspacePackages: false,
|
|
catalogs: {
|
|
default: {
|
|
foo: '0.1.2',
|
|
},
|
|
},
|
|
linkWorkspacePackages: true,
|
|
},
|
|
allProjects: [
|
|
{ rootDir: path.resolve('packages/c') as ProjectRootDir, manifest: {} },
|
|
{ rootDir: path.resolve('packages/a') as ProjectRootDir, manifest: {} },
|
|
{ rootDir: path.resolve('packages/d') as ProjectRootDir, manifest: {} },
|
|
{ rootDir: path.resolve('packages/b') as ProjectRootDir, manifest: {} },
|
|
],
|
|
filteredInstall: false,
|
|
})
|
|
expect(jest.mocked(logger.debug).mock.calls).toStrictEqual([[{ msg: 'updating workspace state' }]])
|
|
expect(loadWorkspaceState(workspaceDir)).toStrictEqual(expect.objectContaining({
|
|
settings: expect.objectContaining({
|
|
catalogs: {
|
|
default: {
|
|
foo: '0.1.2',
|
|
},
|
|
},
|
|
}),
|
|
lastValidatedTimestamp: expect.any(Number),
|
|
projects: {
|
|
[path.resolve('packages/a')]: {},
|
|
[path.resolve('packages/b')]: {},
|
|
[path.resolve('packages/c')]: {},
|
|
[path.resolve('packages/d')]: {},
|
|
},
|
|
}))
|
|
})
|