From 71733c8dad414c08efd57821b896bfc1d6868e22 Mon Sep 17 00:00:00 2001 From: Johannes Ewald Date: Tue, 8 Jul 2014 01:16:29 +0200 Subject: Move __with__-function into own module --- lib/__set__.js | 28 +++------------------------- lib/__with__.js | 34 ++++++++++++++++++++++++++++++++++ lib/rewire.js | 5 ++--- 3 files changed, 39 insertions(+), 28 deletions(-) create mode 100644 lib/__with__.js (limited to 'lib') diff --git a/lib/__set__.js b/lib/__set__.js index feea24a..3fcfbdb 100644 --- a/lib/__set__.js +++ b/lib/__set__.js @@ -7,9 +7,7 @@ * * @param {String|Object} varName name of the variable to set * @param {String} varValue new value - * @throws {TypeError} - * @throws {ReferenceError} When the variable is unknown - * @return {*} + * @return {Function} */ function __set__() { arguments.varName = arguments[0]; @@ -42,28 +40,8 @@ function __set__() { eval(arguments.src); return function (snapshot) { - __set__(snapshot); + module.exports.__set__(snapshot); }.bind(null, arguments.snapshot); } -function __with__() { - var args = arguments; - - return function (callback) { - var undo; - - if (typeof callback !== "function") { - throw new TypeError("__with__ expects a callback function") - } - - undo = __set__.apply(null, args); - - try { - callback(); - } finally { - undo(); - } - } -} - -module.exports = {"__set__": __set__, "__with__": __with__}; +module.exports = __set__; diff --git a/lib/__with__.js b/lib/__with__.js new file mode 100644 index 0000000..ef29c8c --- /dev/null +++ b/lib/__with__.js @@ -0,0 +1,34 @@ +"use strict"; + +/** + * This function will be stringified and then injected into every rewired module. + * + * Calling myModule.__with__("myPrivateVar", newValue) returns a function where + * you can place your tests. As long as the returned function is executed variables + * will be set to the given value, after that all changed variables are reset back to normal. + * + * @param {String|Object} varName name of the variable to set + * @param {String} varValue new value + * @return {Function} + */ +function __with__() { + var args = arguments; + + return function (callback) { + var undo; + + if (typeof callback !== "function") { + throw new TypeError("__with__ expects a callback function"); + } + + undo = module.exports.__set__.apply(null, args); + + try { + callback(); + } finally { + undo(); + } + }; +} + +module.exports = __with__; \ No newline at end of file diff --git a/lib/rewire.js b/lib/rewire.js index 61160fd..086cc27 100644 --- a/lib/rewire.js +++ b/lib/rewire.js @@ -1,9 +1,8 @@ var Module = require("module"), fs = require("fs"), __get__ = require("./__get__.js"), - setModule = require ("./__set__.js"), - __set__ = setModule["__set__"], - __with__ = setModule["__with__"], + __set__ = require ("./__set__.js"), + __with__ = require("./__with__.js"), getImportGlobalsSrc = require("./getImportGlobalsSrc.js"), detectStrictMode = require("./detectStrictMode.js"), moduleEnv = require("./moduleEnv.js"); -- cgit v1.2.3