From 1c9c4ccfc86f0fbefc9b008a6d1dc124b7598fac Mon Sep 17 00:00:00 2001 From: Chih-Hsuan Yen Date: Thu, 12 Aug 2021 16:27:07 +0800 Subject: [PATCH] fix(core): make sure timeout error messages include URLs (#7981) Before this fix, timeout messages are not quite useful > error: Request undefined fail, retry attempt #1: TimeoutError: Timeout awaiting 'request' for 5000ms --- lib/utils/got.js | 2 +- test/utils/got.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/utils/got.js b/lib/utils/got.js index 39b2d2b0941008..05c4b12aff0dda 100644 --- a/lib/utils/got.js +++ b/lib/utils/got.js @@ -7,7 +7,7 @@ const custom = got.extend({ hooks: { beforeRetry: [ (options, err, count) => { - logger.error(`Request ${err.url} fail, retry attempt #${count}: ${err}`); + logger.error(`Request ${options.url} fail, retry attempt #${count}: ${err}`); }, ], afterResponse: [ diff --git a/test/utils/got.js b/test/utils/got.js index ef53103b43f03b..3092d26546c6de 100644 --- a/test/utils/got.js +++ b/test/utils/got.js @@ -1,5 +1,6 @@ process.env.REQUEST_TIMEOUT = '500'; const got = require('../../lib/utils/got'); +const logger = require('../../lib/utils/logger'); const config = require('../../lib/config').value; const nock = require('nock'); @@ -65,11 +66,16 @@ describe('got', () => { return [200, '{"code": 0}']; }); + const loggerSpy = jest.spyOn(logger, 'error').mockReturnValue({}); + try { await got.get('http://rsshub.test/timeout'); throw Error('Timeout Invalid'); } catch (error) { expect(error.name).toBe('RequestError'); } + expect(loggerSpy).toHaveBeenCalledWith(expect.stringContaining('http://rsshub.test/timeout')); + + loggerSpy.mockRestore(); }); });