From 4163d1372a89388f007b47dd6d57a8055ea61907 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Tue, 3 Feb 2015 10:23:47 +1100 Subject: [PATCH] fix istanbul interop - closes #660 --- lib/6to5/register.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/6to5/register.js b/lib/6to5/register.js index a11008ec26..bd2f60d006 100644 --- a/lib/6to5/register.js +++ b/lib/6to5/register.js @@ -72,16 +72,27 @@ var shouldIgnore = function (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 // what istanbul gets, it's extremely dirty but it's the only way var _readFileSync = fs.readFileSync; - fs.readFileSync = function () { - fs.readFileSync = _readFileSync; - return compile(filename); + fs.readFileSync = function (filename) { + if (istanbulMonkey[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); };