mirror of
https://github.com/nodejs/node.git
synced 2024-11-24 20:29:23 +01:00
f1d6b04ac9
Remove the CopyProperties() hack in the vm module, i.e., Contextify.
Use different V8 API methods, that allow interception of
DefineProperty() and do not flatten accessor descriptors to
property descriptors.
Move many known issues to test cases. Factor out the last test in
test-vm-context.js for
https://github.com/nodejs/node/issues/10223
into its own file, test-vm-strict-assign.js.
Part of this CL is taken from a stalled PR by
https://github.com/AnnaMag
https://github.com/nodejs/node/pull/13265
This PR requires a backport of
37a3a15c3e
PR-URL: https://github.com/nodejs/node/pull/16293
Fixes: https://github.com/nodejs/node/issues/2734
Fixes: https://github.com/nodejs/node/issues/10223
Fixes: https://github.com/nodejs/node/issues/11803
Fixes: https://github.com/nodejs/node/issues/11902
Ref: https://github.com/nodejs/node/issues/6283
Ref: https://github.com/nodejs/node/pull/15114
Ref: https://github.com/nodejs/node/pull/13265
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
16 lines
633 B
JavaScript
16 lines
633 B
JavaScript
'use strict';
|
|
// https://github.com/nodejs/node/issues/10223
|
|
|
|
require('../common');
|
|
const assert = require('assert');
|
|
const vm = require('vm');
|
|
|
|
const ctx = vm.createContext();
|
|
vm.runInContext('Object.defineProperty(this, "x", { value: 42 })', ctx);
|
|
assert.strictEqual(vm.runInContext('x', ctx), 42);
|
|
vm.runInContext('x = 0', ctx); // Does not throw but x...
|
|
assert.strictEqual(vm.runInContext('x', ctx), 42); // ...should be unaltered.
|
|
assert.throws(() => vm.runInContext('"use strict"; x = 0', ctx),
|
|
/Cannot assign to read only property 'x'/);
|
|
assert.strictEqual(vm.runInContext('x', ctx), 42);
|