-
-
Notifications
You must be signed in to change notification settings - Fork 938
/
installDeep.ts
67 lines (59 loc) · 1.91 KB
/
installDeep.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/// <reference path="../../../typings/index.d.ts" />
import assertProject from '@pnpm/assert-project'
import { install } from '@pnpm/plugin-commands-installation'
import { readProjects } from '@pnpm/filter-workspace-packages'
import fixtures from '@pnpm/test-fixtures'
import rimraf from '@zkochan/rimraf'
import path from 'path'
import { promises as fs } from 'fs'
import { DEFAULT_OPTS } from './utils'
const f = fixtures(__dirname)
test('Installing a package deeply installs all required dependencies', async () => {
f.prepare('workspace-external-depends-deep')
const cwd = process.cwd()
const {
allProjects,
selectedProjectsGraph,
} = await readProjects(process.cwd(), [
{ namePattern: '@kenrick95/internal-g' },
])
for (const project of allProjects) {
await rimraf(path.join(project.dir, 'node_modules'))
}
const projectGraphKeys = Object.keys(selectedProjectsGraph)
expect(projectGraphKeys).toHaveLength(1)
expect(selectedProjectsGraph[projectGraphKeys[0]].package.manifest.name).toBe(
'@kenrick95/internal-g'
)
console.log('projectGraphKeys', projectGraphKeys)
console.log('cwd', cwd)
await install.handler({
...DEFAULT_OPTS,
dir: cwd,
workspaceDir: cwd,
allProjects,
recursive: true,
selectedProjectsGraph,
preferWorkspacePackages: true,
linkWorkspacePackages: 'deep',
})
for (const project of allProjects) {
const files = await fs.readdir(project.dir)
console.log(project.dir, files)
if (files.includes('node_modules')) {
console.log(
project.dir,
'node_modules',
await fs.readdir(path.join(project.dir, 'node_modules'))
)
// Somehow "g" now has pnpm-lock.yaml ???
}
}
for (const project of allProjects) {
if (project.dir === cwd) {
continue
}
const projectAssertion = assertProject(project.dir)
expect(projectAssertion.requireModule('is-positive')).toBeTruthy()
}
})