node/test/parallel/test-freeze-intrinsics.js
Antoine du Hamel 825163c5ab
lib: fix use of --frozen-intrinsics with --jitless
PR-URL: https://github.com/nodejs/node/pull/51248
Fixes: https://github.com/nodejs/node/issues/51232
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Vinícius Lourenço Claro Cardoso <contact@viniciusl.com.br>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
2023-12-23 12:38:24 +00:00

49 lines
1.2 KiB
JavaScript

// Flags: --frozen-intrinsics --jitless
'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);
}