fix istanbul interop - closes #660

This commit is contained in:
Sebastian McKenzie 2015-02-03 10:23:47 +11:00
parent 4413da8d6e
commit 4163d1372a

View File

@ -72,16 +72,27 @@ var shouldIgnore = function (filename) {
return (ignoreRegex && ignoreRegex.test(filename)) || (onlyRegex && !onlyRegex.test(filename)); return (ignoreRegex && ignoreRegex.test(filename)) || (onlyRegex && !onlyRegex.test(filename));
}; };
var istanbulLoader = function (m, filename, old) { var istanbulMonkey = {};
if (process.env.running_under_istanbul) { // jshint ignore:line
// we need to monkey patch fs.readFileSync so we can hook into // we need to monkey patch fs.readFileSync so we can hook into
// what istanbul gets, it's extremely dirty but it's the only way // what istanbul gets, it's extremely dirty but it's the only way
var _readFileSync = fs.readFileSync; var _readFileSync = fs.readFileSync;
fs.readFileSync = function () { fs.readFileSync = function (filename) {
fs.readFileSync = _readFileSync; if (istanbulMonkey[filename]) {
return compile(filename); delete istanbulMonkey[filename];
var code = compile(filename);
istanbulMonkey[filename] = true;
return code;
} else {
return _readFileSync.apply(this, arguments);
}
}; };
}
var istanbulLoader = function (m, filename, old) {
istanbulMonkey[filename] = true;
old(m, filename); old(m, filename);
}; };