mirror of https://gitee.com/openkylin/nodejs.git
64 lines
1.3 KiB
JavaScript
64 lines
1.3 KiB
JavaScript
'use strict';
|
|
require('../common');
|
|
|
|
// This test ensures that console methods cannot be invoked as constructors and
|
|
// that their name is always correct.
|
|
|
|
const assert = require('assert');
|
|
|
|
const { Console } = console;
|
|
const newInstance = new Console(process.stdout);
|
|
const err = TypeError;
|
|
|
|
const methods = [
|
|
'log',
|
|
'warn',
|
|
'dir',
|
|
'time',
|
|
'timeEnd',
|
|
'timeLog',
|
|
'trace',
|
|
'assert',
|
|
'clear',
|
|
'count',
|
|
'countReset',
|
|
'group',
|
|
'groupEnd',
|
|
'table',
|
|
'debug',
|
|
'info',
|
|
'dirxml',
|
|
'error',
|
|
'groupCollapsed',
|
|
];
|
|
|
|
const alternateNames = {
|
|
debug: 'log',
|
|
info: 'log',
|
|
dirxml: 'log',
|
|
error: 'warn',
|
|
groupCollapsed: 'group'
|
|
};
|
|
|
|
function assertEqualName(method) {
|
|
try {
|
|
assert.strictEqual(console[method].name, method);
|
|
} catch {
|
|
assert.strictEqual(console[method].name, alternateNames[method]);
|
|
}
|
|
try {
|
|
assert.strictEqual(newInstance[method].name, method);
|
|
} catch {
|
|
assert.strictEqual(newInstance[method].name, alternateNames[method]);
|
|
}
|
|
}
|
|
|
|
for (const method of methods) {
|
|
assertEqualName(method);
|
|
|
|
assert.throws(() => new console[method](), err);
|
|
assert.throws(() => new newInstance[method](), err);
|
|
assert.throws(() => Reflect.construct({}, [], console[method]), err);
|
|
assert.throws(() => Reflect.construct({}, [], newInstance[method]), err);
|
|
}
|