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', {