diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/__set__.js | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/__set__.js b/lib/__set__.js index 851a340..bdb5042 100644 --- a/lib/__set__.js +++ b/lib/__set__.js @@ -25,7 +25,13 @@ function __set__() { if (arguments.env.hasOwnProperty(arguments.varName)) { arguments.varValue = arguments.env[arguments.varName]; arguments.src += arguments.varName + " = arguments.env[" + JSON.stringify(arguments.varName) + "]; "; - arguments.revertArgs[0][arguments.varName] = eval(arguments.varName); + try { + // Allow tests to mock implicit globals + // @see https://github.com/jhnns/rewire/issues/35 + arguments.revertArgs[0][arguments.varName] = eval(arguments.varName); + } catch (err) { + arguments.revertArgs[0][arguments.varName] = undefined; + } } } } else if (typeof arguments.varName === "string" && arguments.length === 2) { @@ -33,7 +39,13 @@ function __set__() { throw new TypeError("__set__ expects a non-empty string as a variable name"); } arguments.src = arguments.varName + " = arguments.varValue;"; - arguments.revertArgs = [arguments.varName, eval(arguments.varName)]; + try { + // Allow tests to mock implicit globals + // @see https://github.com/jhnns/rewire/issues/35 + arguments.revertArgs = [arguments.varName, eval(arguments.varName)]; + } catch (err) { + arguments.revertArgs = [arguments.varName, undefined]; + } } else { throw new TypeError("__set__ expects an environment object or a non-empty string as a variable name"); } |