pad_utils: Custom logger interface for warnDeprecated

This commit is contained in:
Richard Hansen 2022-02-27 02:55:09 -05:00
parent 248c114547
commit 908175d1ca
2 changed files with 29 additions and 2 deletions

View file

@ -98,7 +98,8 @@ const padutils = {
* - This makes it possible to see the stack if the code runs in Node.js.
* - Users are more likely to paste the stack in bug reports they might file.
*
* @param {...*} args - Passed to `console.warn`, with a stack trace appended.
* @param {...*} args - Passed to `padutils.warnDeprecated.logger.warn` (or `console.warn` if no
* logger is set), with a stack trace appended if available.
*/
warnDeprecated: (...args) => {
if (padutils.warnDeprecated.disabledForTestingOnly) return;
@ -106,7 +107,7 @@ const padutils = {
if (Error.captureStackTrace) Error.captureStackTrace(err, padutils.warnDeprecated);
err.name = '';
if (err.stack) args.push(err.stack);
console.warn(...args);
(padutils.warnDeprecated.logger || console).warn(...args);
},
escapeHtml: (x) => Security.escapeHTML(String(x)),

View file

@ -0,0 +1,26 @@
'use strict';
const assert = require('assert').strict;
const {padutils} = require('../../../static/js/pad_utils');
describe(__filename, function () {
describe('warnDeprecated', function () {
const {warnDeprecated} = padutils;
const backups = {};
before(async function () {
backups.logger = warnDeprecated.logger;
});
afterEach(async function () {
warnDeprecated.logger = backups.logger;
});
it('includes the stack', async function () {
let got;
warnDeprecated.logger = {warn: (stack) => got = stack};
warnDeprecated();
assert(got.includes(__filename));
});
});
});