Files
zulip/frontend_tests/zjsunit/namespace.js
Steve Howell 2fe78dc691 Fix leaky requires between zjsunit tests.
Some node tests used to pass as long as prior tests ran,
but then they would fail if you ran them standalone.  Now
we are more aggressive about cleaning up node's require
cache after each individual test runs.
2016-07-30 14:54:30 -07:00

46 lines
943 B
JavaScript

var namespace = (function () {
var _ = require('third/underscore/underscore.js');
var exports = {};
var dependencies = [];
var requires = [];
var old_builtins = {};
exports.set_global = function (name, val) {
global[name] = val;
dependencies.push(name);
return val;
};
exports.patch_builtin = function (name, val) {
old_builtins[name] = global[name];
global[name] = val;
return val;
};
exports.add_dependencies = function (dct) {
_.each(dct, function (fn, name) {
var obj = require(fn);
requires.push(fn);
set_global(name, obj);
});
};
exports.restore = function () {
dependencies.forEach(function (name) {
delete global[name];
});
requires.forEach(function (fn) {
delete require.cache[require.resolve(fn)];
});
dependencies = [];
_.extend(global, old_builtins);
old_builtins = {};
};
return exports;
}());
module.exports = namespace;