From 58d58f4bc62d69e17439fb3a1739f703e6bd2ab3 Mon Sep 17 00:00:00 2001 From: Franziska Hinkelmann Date: Mon, 23 Oct 2017 16:06:35 +0200 Subject: [PATCH] test: fix test for inherited properties on vm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-By: Colin Ihrig --- .../test-vm-inherited_properties.js | 20 ---------- test/parallel/test-vm-inherited_properties.js | 38 +++++++++++++++++++ 2 files changed, 38 insertions(+), 20 deletions(-) delete mode 100644 test/known_issues/test-vm-inherited_properties.js create mode 100644 test/parallel/test-vm-inherited_properties.js 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']);