From 2db71d9bfc364f2dcb8d182b350fe0f1bdf967a3 Mon Sep 17 00:00:00 2001 From: Ro Savage Date: Wed, 22 Feb 2017 03:09:33 +1300 Subject: [PATCH 1/3] Update to pass ignorepath regex to sane --- packages/jest-haste-map/package.json | 2 +- packages/jest-haste-map/src/index.js | 5 +++++ packages/jest-runtime/src/index.js | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json index 98d00b50c6aa..ffc4a4a81192 100644 --- a/packages/jest-haste-map/package.json +++ b/packages/jest-haste-map/package.json @@ -12,7 +12,7 @@ "graceful-fs": "^4.1.6", "jest-docblock": "^19.0.2", "micromatch": "^2.3.11", - "sane": "~1.5.0", + "sane": "~1.6.0", "worker-farm": "^1.3.1" } } diff --git a/packages/jest-haste-map/src/index.js b/packages/jest-haste-map/src/index.js index 13dd6d7d70ee..b1a7146bb1af 100644 --- a/packages/jest-haste-map/src/index.js +++ b/packages/jest-haste-map/src/index.js @@ -52,6 +52,7 @@ type Options = { resetCache?: boolean, retainAllFiles: boolean, roots: Array, + testPathIgnorePattern: RegExp | null, throwOnModuleCollision?: boolean, useWatchman?: boolean, watch?: boolean, @@ -70,6 +71,7 @@ type InternalOptions = { resetCache: ?boolean, retainAllFiles: boolean, roots: Array, + testPathIgnorePattern: RegExp | null, throwOnModuleCollision: boolean, useWatchman: boolean, watch: boolean, @@ -210,6 +212,7 @@ class HasteMap extends EventEmitter { resetCache: options.resetCache, retainAllFiles: options.retainAllFiles, roots: Array.from(new Set(options.roots)), + testPathIgnorePattern: options.testPathIgnorePattern, throwOnModuleCollision: !!options.throwOnModuleCollision, useWatchman: options.useWatchman == null ? true : options.useWatchman, watch: !!options.watch, @@ -533,6 +536,7 @@ class HasteMap extends EventEmitter { ? sane.WatchmanWatcher : sane.NodeWatcher; const extensions = this._options.extensions; + const ignorePattern = this._options.testPathIgnorePattern; let changeQueue = Promise.resolve(); let eventsQueue = []; // We only need to copy the entire haste map once on every "frame". @@ -544,6 +548,7 @@ class HasteMap extends EventEmitter { const watcher = new Watcher(root, { dot: false, glob: extensions.map(extension => '**/*.' + extension), + ignored: ignorePattern, }); return new Promise((resolve, reject) => { diff --git a/packages/jest-runtime/src/index.js b/packages/jest-runtime/src/index.js index 2055534399c5..d4edc918505b 100644 --- a/packages/jest-runtime/src/index.js +++ b/packages/jest-runtime/src/index.js @@ -188,6 +188,10 @@ class Runtime { config: Config, options?: HasteMapOptions, ): HasteMap { + const testPathIgnorePattern = + config.testPathIgnorePatterns.length + ? new RegExp(config.testPathIgnorePatterns.join('|')) + : null; const ignorePattern = new RegExp( [config.cacheDirectory].concat(config.modulePathIgnorePatterns).join('|'), ); @@ -206,6 +210,7 @@ class Runtime { resetCache: options && options.resetCache, retainAllFiles: false, roots: config.roots, + testPathIgnorePattern, useWatchman: config.watchman, watch: options && options.watch, }); From 6e9cfeb4e73ce3cd36e3c4422e4f9df0205625e2 Mon Sep 17 00:00:00 2001 From: Ro Savage Date: Fri, 3 Mar 2017 01:25:35 +1100 Subject: [PATCH 2/3] Changed jest-haste-map to pass modulePathIgnorePatterns --- packages/jest-haste-map/src/index.js | 5 +---- packages/jest-runtime/src/index.js | 5 ----- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/packages/jest-haste-map/src/index.js b/packages/jest-haste-map/src/index.js index b1a7146bb1af..0d66e9694541 100644 --- a/packages/jest-haste-map/src/index.js +++ b/packages/jest-haste-map/src/index.js @@ -52,7 +52,6 @@ type Options = { resetCache?: boolean, retainAllFiles: boolean, roots: Array, - testPathIgnorePattern: RegExp | null, throwOnModuleCollision?: boolean, useWatchman?: boolean, watch?: boolean, @@ -71,7 +70,6 @@ type InternalOptions = { resetCache: ?boolean, retainAllFiles: boolean, roots: Array, - testPathIgnorePattern: RegExp | null, throwOnModuleCollision: boolean, useWatchman: boolean, watch: boolean, @@ -212,7 +210,6 @@ class HasteMap extends EventEmitter { resetCache: options.resetCache, retainAllFiles: options.retainAllFiles, roots: Array.from(new Set(options.roots)), - testPathIgnorePattern: options.testPathIgnorePattern, throwOnModuleCollision: !!options.throwOnModuleCollision, useWatchman: options.useWatchman == null ? true : options.useWatchman, watch: !!options.watch, @@ -536,7 +533,7 @@ class HasteMap extends EventEmitter { ? sane.WatchmanWatcher : sane.NodeWatcher; const extensions = this._options.extensions; - const ignorePattern = this._options.testPathIgnorePattern; + const ignorePattern = this._options.ignorePattern; let changeQueue = Promise.resolve(); let eventsQueue = []; // We only need to copy the entire haste map once on every "frame". diff --git a/packages/jest-runtime/src/index.js b/packages/jest-runtime/src/index.js index d4edc918505b..2055534399c5 100644 --- a/packages/jest-runtime/src/index.js +++ b/packages/jest-runtime/src/index.js @@ -188,10 +188,6 @@ class Runtime { config: Config, options?: HasteMapOptions, ): HasteMap { - const testPathIgnorePattern = - config.testPathIgnorePatterns.length - ? new RegExp(config.testPathIgnorePatterns.join('|')) - : null; const ignorePattern = new RegExp( [config.cacheDirectory].concat(config.modulePathIgnorePatterns).join('|'), ); @@ -210,7 +206,6 @@ class Runtime { resetCache: options && options.resetCache, retainAllFiles: false, roots: config.roots, - testPathIgnorePattern, useWatchman: config.watchman, watch: options && options.watch, }); From ef28d7b8e64c22766e5a1e07adce9cd27834f3ea Mon Sep 17 00:00:00 2001 From: Ro Savage Date: Sat, 4 Mar 2017 04:00:22 +1100 Subject: [PATCH 3/3] Update jest-haste-map ignorePattern to accept RegExp or Function --- packages/jest-haste-map/src/index.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/jest-haste-map/src/index.js b/packages/jest-haste-map/src/index.js index 0d66e9694541..c5d580d8e9e9 100644 --- a/packages/jest-haste-map/src/index.js +++ b/packages/jest-haste-map/src/index.js @@ -43,7 +43,7 @@ type Options = { extensions: Array, forceNodeFilesystemAPI?: boolean, hasteImplModulePath?: string, - ignorePattern: RegExp, + ignorePattern: RegExp | Function, maxWorkers: number, mocksPattern?: string, name: string, @@ -62,7 +62,7 @@ type InternalOptions = { extensions: Array, forceNodeFilesystemAPI: boolean, hasteImplModulePath?: string, - ignorePattern: RegExp, + ignorePattern: RegExp | Function, maxWorkers: number, mocksPattern: ?RegExp, name: string, @@ -688,7 +688,13 @@ class HasteMap extends EventEmitter { * Helpers */ _ignore(filePath: Path): boolean { - return this._options.ignorePattern.test(filePath) || + const ignorePattern = this._options.ignorePattern; + const ignoreMatched = + Object.prototype.toString.call(ignorePattern) === '[object RegExp]' + ? ignorePattern.test(filePath) // $FlowFixMe + : ignorePattern(filePath); + + return ignoreMatched || (!this._options.retainAllFiles && this._isNodeModulesDir(filePath)); }