diff options
author | Franziska Hinkelmann <franziska.hinkelmann@gmail.com> | 2017-10-23 16:06:35 +0200 |
---|---|---|
committer | Franziska Hinkelmann <franziska.hinkelmann@gmail.com> | 2017-10-25 17:23:40 +0200 |
commit | ed116dc3c65a6d568e2de7c09bd1c6f9db2c9b24 (patch) | |
tree | 5bcda3f4fadf0dfc8d9415e9625045f8084fc5cc /test | |
parent | 9c6f6b0633ef4009cc04cfff5efb29c23ef5fc2b (diff) | |
download | android-node-v8-ed116dc3c65a6d568e2de7c09bd1c6f9db2c9b24.tar.gz android-node-v8-ed116dc3c65a6d568e2de7c09bd1c6f9db2c9b24.tar.bz2 android-node-v8-ed116dc3c65a6d568e2de7c09bd1c6f9db2c9b24.zip |
test: fix test for inherited properties on vm
The known issue is fixed with
https://github.com/nodejs/node/pull/16293.
The text needs to call `Object.hasOwnProperty(this)`
instead of `this.hasOwnProperty()`, otherwise `this` is
from the wrong context is used.
Add a second test case taken verbatim from issue
https://github.com/nodejs/node/issues/5350
PR-URL: https://github.com/nodejs/node/pull/16411
Fixes: https://github.com/nodejs/node/issues/5350
Ref: https://github.com/nodejs/node/pull/16293
Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/known_issues/test-vm-inherited_properties.js | 20 | ||||
-rw-r--r-- | test/parallel/test-vm-inherited_properties.js | 38 |
2 files changed, 38 insertions, 20 deletions
diff --git a/test/known_issues/test-vm-inherited_properties.js b/test/known_issues/test-vm-inherited_properties.js deleted file mode 100644 index 3df9c57219..0000000000 --- a/test/known_issues/test-vm-inherited_properties.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; -// Ref: https://github.com/nodejs/node/issues/5350 - -require('../common'); -const vm = require('vm'); -const assert = require('assert'); - -const base = { - propBase: 1 -}; - -const sandbox = Object.create(base, { - propSandbox: { value: 3 } -}); - -const context = vm.createContext(sandbox); - -const result = vm.runInContext('this.hasOwnProperty("propBase");', context); - -assert.strictEqual(result, false); diff --git a/test/parallel/test-vm-inherited_properties.js b/test/parallel/test-vm-inherited_properties.js new file mode 100644 index 0000000000..53087e1596 --- /dev/null +++ b/test/parallel/test-vm-inherited_properties.js @@ -0,0 +1,38 @@ +'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']); |