mirror of
https://github.com/nodejs/node.git
synced 2025-05-14 13:45:37 +00:00

The console object was not being frozen because the intrinsic freezing code was accessing undefined instead of the console object. PR-URL: https://github.com/nodejs/node/pull/46044 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
// Flags: --frozen-intrinsics
|
|
'use strict';
|
|
require('../common');
|
|
const assert = require('assert');
|
|
|
|
assert.throws(
|
|
() => Object.defineProperty = 'asdf',
|
|
TypeError
|
|
);
|
|
|
|
// Ensure we can extend Console
|
|
{
|
|
class ExtendedConsole extends console.Console {}
|
|
|
|
const s = new ExtendedConsole(process.stdout);
|
|
const logs = [];
|
|
s.log = (msg) => logs.push(msg);
|
|
s.log('custom');
|
|
s.log = undefined;
|
|
assert.strictEqual(s.log, undefined);
|
|
assert.strictEqual(logs.length, 1);
|
|
assert.strictEqual(logs[0], 'custom');
|
|
}
|
|
|
|
// Ensure we can write override Object prototype properties on instances
|
|
{
|
|
const o = {};
|
|
o.toString = () => 'Custom toString';
|
|
assert.strictEqual(o + 'asdf', 'Custom toStringasdf');
|
|
assert.strictEqual(Object.getOwnPropertyDescriptor(o, 'toString').enumerable,
|
|
true);
|
|
}
|
|
|
|
// Ensure we can not override globalThis
|
|
{
|
|
assert.throws(() => { globalThis.globalThis = null; },
|
|
{ name: 'TypeError' });
|
|
assert.strictEqual(globalThis.globalThis, globalThis);
|
|
}
|
|
|
|
// Ensure that we cannot override console properties.
|
|
{
|
|
const { log } = console;
|
|
|
|
assert.throws(() => { console.log = null; },
|
|
{ name: 'TypeError' });
|
|
assert.strictEqual(console.log, log);
|
|
}
|