From 558cb0dc47c7e53a98137107214755b506a7a583 Mon Sep 17 00:00:00 2001 From: Eddie Leffler Date: Fri, 24 Aug 2018 15:48:45 -0700 Subject: [PATCH] Support turning off node_modules default exclude via flag --- src/index.js | 4 +++- test/babel-plugin-istanbul.js | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 031d637..78aa278 100644 --- a/src/index.js +++ b/src/index.js @@ -29,7 +29,9 @@ function makeShouldSkip () { // nyc was configured in a parent process (keep these settings). config = { include: nycConfig.include, - exclude: nycConfig.exclude + exclude: nycConfig.exclude, + // Make sure this is true unless explicitly set to `false`. `undefined` is still `true`. + excludeNodeModules: nycConfig.excludeNodeModules !== false } } else { // fallback to loading config from key in package.json. diff --git a/test/babel-plugin-istanbul.js b/test/babel-plugin-istanbul.js index bb80efd..91d58e3 100644 --- a/test/babel-plugin-istanbul.js +++ b/test/babel-plugin-istanbul.js @@ -30,6 +30,32 @@ describe('babel-plugin-istanbul', function () { result.code.should.not.match(/statementMap/) }) + context('local node_modules', function () { + it('should instrument file if shouldSkip returns false', function () { + var result = babel.transformFileSync('./fixtures/node_modules/should-cover.js', { + plugins: [ + [makeVisitor({types: babel.types}), { + excludeNodeModules: false, + exclude: ['node_modules/**'], + include: ['fixtures/node_modules/should-cover.js'] + }] + ] + }) + result.code.should.match(/statementMap/) + }) + + it('should not instrument file if shouldSkip returns true', function () { + var result = babel.transformFileSync('./fixtures/node_modules/should-not-cover.js', { + plugins: [ + [makeVisitor({types: babel.types}), { + include: ['fixtures/node_modules/should-not-cover.js'] + }] + ] + }) + result.code.should.not.match(/statementMap/) + }) + }) + it('should call onCover callback', function () { var args babel.transformFileSync('./fixtures/plugin-should-cover.js', {