Skip to content

Commit

Permalink
Do not throw if error messages cannot be munged
Browse files Browse the repository at this point in the history
Fix #437
  • Loading branch information
isaacs committed Jan 22, 2019
1 parent 07867c1 commit 7d19266
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 5 deletions.
22 changes: 18 additions & 4 deletions lib/extra-from-error.js
Expand Up @@ -18,17 +18,31 @@ module.exports = function (er, extra, options) {
: ''
const addName = er.message || !er.stack

if (er.message)
er.message = ''
if (er.message) {
try {
Object.defineProperty(er, 'message', {
value: '',
configurable: true
})
} catch (e) {}
}

const st = er.stack
if (st) {
const splitst = st.split('\n')
// parse out the 'at' bit from the first line.
extra.at = stack.parseLine(splitst[1])
extra.stack = stack.clean(splitst)
}
if (message)
er.message = message

if (message) {
try {
Object.defineProperty(er, 'message', {
value: message,
configurable: true
})
} catch (e) {}
}

if (er.name && er.name !== 'Error')
extra.type = er.name
Expand Down
27 changes: 26 additions & 1 deletion test/extra-from-error.js
@@ -1,6 +1,23 @@
'use strict'
const t = require('../')
const extraFromError = require('../lib/extra-from-error.js')
const assert = require('assert')
const messageGetter = {
get message () {
return 'this is your message'
},
foo: 'bar',
}

const messageNonConfig = {
foo: 'bar',
}
Object.defineProperty(messageNonConfig, 'message', {
value: 'this is your message',
configurable: false,
enumerable: false,
writable: false
})

const cases = [
[new Error('ok'), null, null, {
Expand Down Expand Up @@ -41,7 +58,15 @@ const cases = [
[{ name: 'asdf' }, null, null, {
type: 'asdf',
message: null
}]
}],

[messageGetter, null, null, {
foo: 'bar',
}],

[messageNonConfig, null, null, {
foo: 'bar',
}],
]

cases.forEach(c => t.match(extraFromError(c[0], c[1], c[2]), c[3]))

0 comments on commit 7d19266

Please sign in to comment.