From b628d34270659a1e5fc7bdd2490b4b439ce9c499 Mon Sep 17 00:00:00 2001 From: Andres Torres Date: Mon, 25 Jan 2021 15:49:56 -0500 Subject: [PATCH] fix: Check error object before updating stack. (Fixes #700) --- lib/test.js | 2 +- test/supertest.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/test.js b/lib/test.js index be62ebb..6812255 100644 --- a/lib/test.js +++ b/lib/test.js @@ -78,7 +78,7 @@ function wrapAssertFn(assertFn) { return function(res) { var badStack; var err = assertFn(res); - if (err && err.stack) { + if (err instanceof Error && err.stack) { badStack = err.stack.replace(err.message, '').split('\n').slice(1); err.stack = [err.toString()] .concat(savedStack) diff --git a/test/supertest.js b/test/supertest.js index bdeb683..5f43893 100644 --- a/test/supertest.js +++ b/test/supertest.js @@ -738,6 +738,18 @@ describe('request(app)', function () { .end(done); }); + it("doesn't create false negatives on non error objects", function (done) { + const handler = { + get: function(target, prop, receiver) { + throw Error('Should not be called for non Error objects'); + } + }; + const proxy = new Proxy({}, handler); // eslint-disable-line no-undef + get + .expect(() => proxy) + .end(done); + }); + it('handles multiple asserts', function (done) { const calls = []; get