From 9f8f0284c30d77471decb26402cdb7897492fb2b Mon Sep 17 00:00:00 2001 From: Mike Pennisi Date: Wed, 4 Mar 2015 18:38:37 -0500 Subject: [PATCH] Make writability helper function non-destructive After checking the writability of a given property, restore the property value to its original state. --- harness/propertyHelper.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/harness/propertyHelper.js b/harness/propertyHelper.js index dd9cdceccf..d415f2fa96 100644 --- a/harness/propertyHelper.js +++ b/harness/propertyHelper.js @@ -29,6 +29,9 @@ function isEqualTo(obj, name, expectedValue) { function isWritable(obj, name, verifyProp, value) { var newValue = value || "unlikelyValue"; + var hadValue = Object.prototype.hasOwnProperty.call(obj, name); + var oldValue = obj[name]; + var result; try { obj[name] = newValue; @@ -38,12 +41,16 @@ function isWritable(obj, name, verifyProp, value) { } } - if ((verifyProp && isEqualTo(obj, verifyProp, newValue)) || - isEqualTo(obj, name, newValue)) { - return true; + result = (verifyProp && isEqualTo(obj, verifyProp, newValue)) || + isEqualTo(obj, name, newValue); + + if (hadValue) { + obj[name] = oldValue; + } else { + delete obj[name]; } - return false; + return result; } function verifyEqualTo(obj, name, value) {