This repository was archived by the owner on Nov 2, 2025. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathsettings.js
More file actions
93 lines (84 loc) · 2.66 KB
/
settings.js
File metadata and controls
93 lines (84 loc) · 2.66 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
93
'use strict'
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 settingsResolve
let settingsPromise
function settingsPromiseInitialize() {
if (!settingsPromise) {
settingsPromise = new Promise(resolve => {
settingsResolve = resolve
})
}
}
module.exports = {
atTap: false,
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')
},
// This tells `libtap/tla` that settings are prepared
markAsReady() {
settingsPromiseInitialize();
settingsResolve();
},
waitForReady() {
settingsPromiseInitialize()
return settingsPromise;
}
}
/* 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)
}