-
-
Notifications
You must be signed in to change notification settings - Fork 350
/
reset-state.js
32 lines (25 loc) · 1.06 KB
/
reset-state.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
'use strict'
const { promisify } = require('util')
// reset global state modified by nyc in non-integration tests.
const extensions = Object.assign({}, require.extensions) // eslint-disable-line
const glob = promisify(require('glob'))
const rimraf = promisify(require('rimraf'))
module.exports = async () => {
// nuke any temporary files created during test runs.
const files = await glob('test/**/*/{.nyc_output,.cache}')
await Promise.all(files.map(f => rimraf(f)))
// reset Node's require cache.
Object.keys(require.cache).forEach((key) => {
if (!key.includes('node_modules')) delete require.cache[key]
})
// reset any custom loaders for extensions, disabling the stack maintained
// by append-transform.
Object.keys(require.extensions).forEach((key) => { // eslint-disable-line
delete require.extensions[key] // eslint-disable-line
if (extensions[key]) {
require.extensions[key] = extensions[key] // eslint-disable-line
}
})
// reset any NYC-specific environment variables that might have been set.
delete process.env.NYC_CWD
}