-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathindex.js
More file actions
92 lines (80 loc) · 2.51 KB
/
index.js
File metadata and controls
92 lines (80 loc) · 2.51 KB
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
'use strict'
const ncpcb = require('ncp')
const test = require('tape')
const path = require('path')
const preferredPM = require('preferred-pm')
const tempy = require('tempy')
const { promisify } = require('util')
const ncp = promisify(ncpcb)
test('preferredPM()', async t => {
t.plan(2)
try {
await preferredPM()
} catch (err) {
t.equal(err.message, 'pkgPath should be a string, got undefined')
}
try {
await preferredPM(1)
} catch (err) {
t.equal(err.message, 'pkgPath should be a string, got number')
}
t.end()
})
test('prefer pnpm 1 or 2', async t => {
const pm = await preferredPM(path.join(__dirname, 'prefers-pnpm-1-or-2'))
t.deepEqual(pm, { name: 'pnpm', version: '1 || 2' })
t.end()
})
test('prefer pnpm', async t => {
const pm = await preferredPM(path.join(__dirname, 'prefers-pnpm'))
t.deepEqual(pm, { name: 'pnpm', version: '>=3' })
t.end()
})
test('prefer pnpm inside a pnpm workspace', async t => {
const pm = await preferredPM(path.join(__dirname, 'pnpm-workspace/packages/pkg'))
t.deepEqual(pm, { name: 'pnpm', version: '>=3' })
t.end()
})
test('prefer Yarn', async t => {
const pm = await preferredPM(path.join(__dirname, 'prefers-yarn'))
t.deepEqual(pm, { name: 'yarn', version: '*' })
t.end()
})
test('prefer Yarn inside a Yarn workspace', async t => {
const dir = tempy.directory()
await ncp(path.join(__dirname, 'yarn-workspace'), dir)
const pm = await preferredPM(path.join(dir, 'packages/pkg'))
t.deepEqual(pm, { name: 'yarn', version: '*' })
t.end()
})
test('prefer npm inside an npm workspace', async t => {
const dir = tempy.directory()
await ncp(path.join(__dirname, 'npm-workspace'), dir)
const pm = await preferredPM(path.join(dir, 'packages/pkg'))
t.deepEqual(pm, { name: 'npm', version: '>=7' })
t.end()
})
test('prefer Bun', async t => {
const pm = await preferredPM(path.join(__dirname, 'prefers-bun'))
t.deepEqual(pm, { name: 'bun', version: '*' })
t.end()
})
test('prefer npm 5', async t => {
const pm = await preferredPM(path.join(__dirname, 'prefers-npm-5'))
t.deepEqual(pm, { name: 'npm', version: '>=5' })
t.end()
})
test('prefer npm', async t => {
const dir = tempy.directory()
await ncp(path.join(__dirname, 'prefers-npm'), dir)
const pm = await preferredPM(dir)
t.deepEqual(pm, { name: 'npm', version: '*' })
t.end()
})
test('prefer nothing', async t => {
const dir = tempy.directory()
await ncp(path.join(__dirname, 'prefers-nothing'), dir)
const pm = await preferredPM(dir)
t.equal(pm, null)
t.end()
})