node/test/parallel/test-vm-inherited_properties.js
Jordan Harband 757c104147
tools: add prefer-proto rule
fixup: add support for `Object.create(null)`

fixup: extend to any 1-argument Object.create call

fixup: add tests
PR-URL: https://github.com/nodejs/node/pull/46083
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
2023-01-10 05:38:36 +00:00

39 lines
801 B
JavaScript

'use strict';
require('../common');
const vm = require('vm');
const assert = require('assert');
let base = {
propBase: 1
};
let sandbox = Object.create(base, {
propSandbox: { value: 3 }
});
const context = vm.createContext(sandbox);
let result = vm.runInContext('Object.hasOwnProperty(this, "propBase");',
context);
assert.strictEqual(result, false);
// Ref: https://github.com/nodejs/node/issues/5350
base = { __proto__: null };
base.x = 1;
base.y = 2;
sandbox = { __proto__: base };
sandbox.z = 3;
assert.deepStrictEqual(Object.keys(sandbox), ['z']);
const code = 'x = 0; z = 4;';
result = vm.runInNewContext(code, sandbox);
assert.strictEqual(result, 4);
// Check that y is not an own property.
assert.deepStrictEqual(Object.keys(sandbox), ['z', 'x']);