-
-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathsettings.js
135 lines (110 loc) · 3.84 KB
/
settings.js
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
'use strict'
const process = require('./lib/process.js')
const fs = require('fs')
const path = require('path')
const StackUtils = require('stack-utils')
// Just unconditionally use fs.rmdirSync after LTS/12 is required
let rmdirRecursiveSync
let rmdirRecursive
let hasFsRm = false
let mkdirRecursive
let mkdirRecursiveSync
module.exports = {
atTap: false,
get mkdirpNeeded() {
const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(Number)
/* istanbul ignore next: version specific */
return !mkdirRecursiveSync && (nodeMajor < 10 || (nodeMajor === 10 && nodeMinor < 12))
},
get mkdirRecursive() {
/* istanbul ignore next: version specific */
if (!mkdirRecursive) {
return () => {
throw new Error("require('libtap/settings').mkdirRecursive must be initialized for Node.js <10.12.0")
}
}
return mkdirRecursive
},
set mkdirRecursive(value) {
if (typeof value !== 'function' || value.length !== 2) {
throw new TypeError('mkdirRecursive must be a function with exactly two arguments')
}
mkdirRecursive = value
},
get mkdirRecursiveSync() {
/* istanbul ignore next: version specific */
if (!mkdirRecursiveSync) {
return () => {
throw new Error("require('libtap/settings').mkdirRecursiveSync must be initialized for Node.js <10.12.0")
}
}
return mkdirRecursiveSync
},
set mkdirRecursiveSync(value) {
if (typeof value !== 'function' || value.length !== 1) {
throw new TypeError('mkdirRecursiveSync must be a function with exactly one argument')
}
mkdirRecursiveSync = value
},
get rimrafNeeded() {
const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(Number)
/* istanbul ignore next: version specific */
hasFsRm = (nodeMajor === 14 && nodeMinor >= 14) || nodeMajor >= 15
/* istanbul ignore next: version specific */
return !rmdirRecursiveSync && (nodeMajor < 12 || (nodeMajor === 12 && nodeMinor < 10))
},
get rmdirRecursive() {
/* istanbul ignore next: version specific */
if (!rmdirRecursive) {
return () => {
throw new Error("require('libtap/settings').rmdirRecursive must be initialized for Node.js <12.10.0")
}
}
return rmdirRecursive
},
set rmdirRecursive(value) {
if (typeof value !== 'function' || value.length !== 2) {
throw new TypeError('rmdirRecursive must be a function with exactly two arguments')
}
rmdirRecursive = value
},
get rmdirRecursiveSync() {
/* istanbul ignore next: version specific */
if (!rmdirRecursiveSync) {
return () => {
throw new Error("require('libtap/settings').rmdirRecursiveSync must be initialized for Node.js <12.10.0")
}
}
return rmdirRecursiveSync
},
set rmdirRecursiveSync(value) {
if (typeof value !== 'function' || value.length !== 1) {
throw new TypeError('rmdirRecursiveSync must be a function with exactly one argument')
}
rmdirRecursiveSync = value
},
StackUtils,
stackUtils: {
// Support `settings.stackUtils.internals.push()`
internals: StackUtils.nodeInternals(),
ignoredPackages: []
},
output: process.stdout,
snapshotFile: (cwd, main, argv) => {
return path.resolve(cwd, 'tap-snapshots', main + argv + '.test.cjs')
}
}
/* istanbul ignore next: version specific */
if (!module.exports.rimrafNeeded) {
const fs = require('fs')
const rm = hasFsRm ? 'rm' : 'rmdir'
const rmSync = `${rm}Sync`
rmdirRecursiveSync = dir => fs[rmSync](dir, {recursive: true, force: true})
rmdirRecursive = (dir, cb) => fs[rm](dir, {recursive: true, force: true}, cb)
}
/* istanbul ignore next: version specific */
if (!module.exports.mkdirpNeeded) {
const { mkdir, mkdirSync } = require('fs')
mkdirRecursiveSync = dir => mkdirSync(dir, { recursive: true })
mkdirRecursive = (dir, cb) => mkdir(dir, { recursive: true }, cb)
}