From 3671356143c8954b874a8296365916df2d1ca462 Mon Sep 17 00:00:00 2001 From: Eddie Leffler Date: Thu, 23 Aug 2018 17:50:52 -0700 Subject: [PATCH] Support turning of node_modules default exclude via flag --- packages/test-exclude/index.js | 8 ++++++-- packages/test-exclude/test/test-exclude.js | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/packages/test-exclude/index.js b/packages/test-exclude/index.js index 0f807095..fd41b0be 100644 --- a/packages/test-exclude/index.js +++ b/packages/test-exclude/index.js @@ -14,7 +14,8 @@ class TestExclude { relativePath: true, configKey: null, // the key to load config from in package.json. configPath: null, // optionally override requireMainFilename. - configFound: false + configFound: false, + excludeNodeModules: true }, opts ); @@ -41,7 +42,10 @@ class TestExclude { this.include = false; } - if (!this.exclude.includes('**/node_modules/**')) { + if ( + this.excludeNodeModules && + !this.exclude.includes('**/node_modules/**') + ) { this.exclude.push('**/node_modules/**'); } diff --git a/packages/test-exclude/test/test-exclude.js b/packages/test-exclude/test/test-exclude.js index b8545801..fa3bdf24 100644 --- a/packages/test-exclude/test/test-exclude.js +++ b/packages/test-exclude/test/test-exclude.js @@ -131,6 +131,25 @@ describe('testExclude', function() { e.shouldInstrument('src/foo.js').should.equal(true); }); + it('allows node_modules default exclusion glob to be turned off, if excludeNodeModules === false', function() { + const e = exclude({ + excludeNodeModules: false, + exclude: ['node_modules/**', '**/__test__/**'] + }); + + e.shouldInstrument('node_modules/cat.js').should.equal(false); + e.shouldInstrument('./banana/node_modules/cat.js').should.equal(true); + e.shouldInstrument( + './banana/node_modules/__test__/cat.test.js' + ).should.equal(false); + e.shouldInstrument( + './banana/node_modules/__test__/cat-test.js' + ).should.equal(false); + e.shouldInstrument( + './banana/node_modules/__test__/cat.js' + ).should.equal(false); + }); + it('allows negated exclude patterns', function() { const e = exclude({ exclude: ['foo/**', '!foo/bar.js']