| '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 = Object.create(null); |
| base.x = 1; |
| base.y = 2; |
| |
| sandbox = Object.create(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']); |