mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
934 B
26 lines
934 B
8 years ago
|
'use strict';
|
||
|
require('../common');
|
||
|
const assert = require('assert');
|
||
|
const vm = require('vm');
|
||
|
|
||
|
// The QueryCallback explicitly calls GetRealNamedPropertyAttributes
|
||
|
// on the global proxy if the property is not found on the sandbox.
|
||
|
//
|
||
|
// foo is not defined on the sandbox until we call CopyProperties().
|
||
|
// In the QueryCallback, we do not find the property on the sandbox
|
||
|
// and look up its PropertyAttributes on the global_proxy().
|
||
|
// PropertyAttributes are always flattened to a value
|
||
|
// descriptor.
|
||
|
const sandbox = {};
|
||
|
vm.createContext(sandbox);
|
||
|
const code = `Object.defineProperty(
|
||
|
this,
|
||
|
'foo',
|
||
|
{ get: function() {return 17} }
|
||
|
);
|
||
|
var desc = Object.getOwnPropertyDescriptor(this, 'foo');`;
|
||
|
|
||
|
vm.runInContext(code, sandbox);
|
||
|
// The descriptor is flattened. We wrongly have typeof desc.value = 'number'.
|
||
|
assert.strictEqual(typeof sandbox.desc.get, 'function');
|