Просмотр исходного кода

Merge pull request #9625 from overleaf/jpa-logging-no-stack

[o-error] fallback from err.stack to err.message then '(no stack)'

GitOrigin-RevId: 2b5e8af5791d92e618336a201f8c66ba23c8d46d
Jakob Ackermann 3 лет назад
Родитель
Сommit
ee70dc4a19
2 измененных файлов с 13 добавлено и 1 удалено
  1. 1 1
      libraries/o-error/index.js
  2. 12 0
      libraries/o-error/test/o-error-util.test.js

+ 1 - 1
libraries/o-error/index.js

@@ -137,7 +137,7 @@ class OError extends Error {
 
     const oError = /** @type{OError} */ (error)
 
-    let stack = oError.stack || '(no stack)'
+    let stack = oError.stack || oError.message || '(no stack)'
 
     if (Array.isArray(oError._oErrorTags) && oError._oErrorTags.length) {
       stack += `\n${oError._oErrorTags.map(tag => tag.stack).join('\n')}`

+ 12 - 0
libraries/o-error/test/o-error-util.test.js

@@ -409,5 +409,17 @@ describe('utils', function () {
         expect(OError.getFullInfo(error.cause)).to.eql({ foo: 1 })
       }
     })
+
+    it('works when given non Error', function () {
+      expect(OError.getFullStack({ message: 'Foo' })).to.equal('Foo')
+    })
+
+    it('works when given non Error with tags', function () {
+      const error = OError.tag({ message: 'Foo: bar' }, 'baz')
+      expectFullStackWithoutStackFramesToEqual(error, [
+        'Foo: bar',
+        'TaggedError: baz',
+      ])
+    })
   })
 })