| 'use strict'; |
| // Refs: https://github.com/nodejs/node/issues/10223 |
| |
| require('../common'); |
| const vm = require('vm'); |
| const assert = require('assert'); |
| |
| const context = vm.createContext({}); |
| |
| let code = ` |
| Object.defineProperty(this, 'foo', {value: 5}); |
| Object.getOwnPropertyDescriptor(this, 'foo'); |
| `; |
| |
| let desc = vm.runInContext(code, context); |
| |
| assert.strictEqual(desc.writable, false); |
| |
| // Check that interceptors work for symbols. |
| code = ` |
| const bar = Symbol('bar'); |
| Object.defineProperty(this, bar, {value: 6}); |
| Object.getOwnPropertyDescriptor(this, bar); |
| `; |
| |
| desc = vm.runInContext(code, context); |
| |
| assert.strictEqual(desc.value, 6); |