summaryrefslogtreecommitdiff
path: root/deps/npm/test/lib/utils/error-handler.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/test/lib/utils/error-handler.js')
-rw-r--r--deps/npm/test/lib/utils/error-handler.js38
1 files changed, 24 insertions, 14 deletions
diff --git a/deps/npm/test/lib/utils/error-handler.js b/deps/npm/test/lib/utils/error-handler.js
index a00bac76e1..9a681e52ce 100644
--- a/deps/npm/test/lib/utils/error-handler.js
+++ b/deps/npm/test/lib/utils/error-handler.js
@@ -1,6 +1,7 @@
/* eslint-disable no-extend-native */
/* eslint-disable no-global-assign */
const EventEmitter = require('events')
+const writeFileAtomic = require('write-file-atomic')
const t = require('tap')
// NOTE: Although these unit tests may look like the rest on the surface,
@@ -23,13 +24,10 @@ const redactCwd = (path) => {
t.cleanSnapshot = (str) => redactCwd(str)
// internal modules mocks
-const cacheFile = {
- append: () => null,
- write: () => null,
-}
+const cacheFolder = t.testdir({})
const config = {
values: {
- cache: 'cachefolder',
+ cache: cacheFolder,
timing: true,
},
loaded: true,
@@ -111,20 +109,20 @@ process = Object.assign(
// in order for tap to exit properly
t.teardown(() => {
process = _process
+ npmlog.record.length = 0
})
const mocks = {
npmlog,
- '../../../lib/npm.js': npm,
'../../../lib/utils/error-message.js': (err) => ({
...err,
summary: [['ERR', err.message]],
detail: [['ERR', err.message]],
}),
- '../../../lib/utils/cache-file.js': cacheFile,
}
let errorHandler = t.mock('../../../lib/utils/error-handler.js', mocks)
+errorHandler.setNpm(npm)
t.test('default exit code', (t) => {
t.plan(1)
@@ -160,10 +158,14 @@ t.test('default exit code', (t) => {
t.test('handles unknown error', (t) => {
t.plan(2)
- cacheFile.write = (filename, content) => {
+ const _toISOString = Date.prototype.toISOString
+ Date.prototype.toISOString = () => 'expecteddate'
+
+ const sync = writeFileAtomic.sync
+ writeFileAtomic.sync = (filename, content) => {
t.equal(
redactCwd(filename),
- '{CWD}/cachefolder/_logs/expecteddate-debug.log',
+ '{CWD}/test/lib/utils/tap-testdir-error-handler/_logs/expecteddate-debug.log',
'should use expected log filename'
)
t.matchSnapshot(
@@ -175,7 +177,8 @@ t.test('handles unknown error', (t) => {
errorHandler(err)
t.teardown(() => {
- cacheFile.write = () => null
+ writeFileAtomic.sync = sync
+ Date.prototype.toISOString = _toISOString
})
t.end()
})
@@ -205,11 +208,14 @@ t.test('npm.config not ready', (t) => {
t.test('fail to write logfile', (t) => {
t.plan(1)
- cacheFile.write = () => {
- throw err
- }
+ const badDir = t.testdir({
+ _logs: 'is a file',
+ })
+
+ config.values.cache = badDir
+
t.teardown(() => {
- cacheFile.write = () => null
+ config.values.cache = cacheFolder
})
t.doesNotThrow(
@@ -372,6 +378,7 @@ t.test('uses code from errno', (t) => {
t.plan(1)
errorHandler = t.mock('../../../lib/utils/error-handler.js', mocks)
+ errorHandler.setNpm(npm)
npmlog.level = 'silent'
const _exit = process.exit
@@ -396,6 +403,7 @@ t.test('uses exitCode as code if using a number', (t) => {
t.plan(1)
errorHandler = t.mock('../../../lib/utils/error-handler.js', mocks)
+ errorHandler.setNpm(npm)
npmlog.level = 'silent'
const _exit = process.exit
@@ -420,6 +428,7 @@ t.test('call errorHandler with no error', (t) => {
t.plan(1)
errorHandler = t.mock('../../../lib/utils/error-handler.js', mocks)
+ errorHandler.setNpm(npm)
const _exit = process.exit
process.exit = (code) => {
@@ -478,6 +487,7 @@ t.test('set it worked', (t) => {
t.plan(1)
errorHandler = t.mock('../../../lib/utils/error-handler.js', mocks)
+ errorHandler.setNpm(npm)
const _exit = process.exit
process.exit = () => {