From 50dbe50bccaf18dd82999de64384c50775d6ad29 Mon Sep 17 00:00:00 2001 From: Hieu Lam Date: Wed, 12 Feb 2020 03:08:00 +0700 Subject: [PATCH 1/6] fix: update helper to check is core module, module name mapper is priority --- packages/jest-resolve/src/index.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/jest-resolve/src/index.ts b/packages/jest-resolve/src/index.ts index 4020a62a7c55..003e93d3576f 100644 --- a/packages/jest-resolve/src/index.ts +++ b/packages/jest-resolve/src/index.ts @@ -218,8 +218,21 @@ class Resolver { ); } + private _isAliasModule(moduleName: string) { + const moduleNameMapper = this._options.moduleNameMapper; + if (!moduleNameMapper) { + return false; + } + + return moduleNameMapper.some(({regex}) => regex.test(moduleName)); + } + isCoreModule(moduleName: string): boolean { - return this._options.hasCoreModules && isBuiltinModule(moduleName); + return ( + this._options.hasCoreModules && + isBuiltinModule(moduleName) && + !this._isAliasModule(moduleName) + ); } getModule(name: string): Config.Path | null { From 3c1248f005fbdddcd64c494cca37d844f75f8416 Mon Sep 17 00:00:00 2001 From: Hieu Lam Date: Wed, 12 Feb 2020 03:10:59 +0700 Subject: [PATCH 2/6] chore: write more test for isCoreModule helper in `jest-resolve` --- .../jest-resolve/src/__tests__/resolve.test.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/jest-resolve/src/__tests__/resolve.test.ts b/packages/jest-resolve/src/__tests__/resolve.test.ts index 4d8d174385a7..9e5499c5832f 100644 --- a/packages/jest-resolve/src/__tests__/resolve.test.ts +++ b/packages/jest-resolve/src/__tests__/resolve.test.ts @@ -45,6 +45,20 @@ describe('isCoreModule', () => { const isCore = resolver.isCoreModule('not-a-core-module'); expect(isCore).toEqual(false); }); + + it('returns false if `hasCoreModules` is true and `moduleNameMapper` alias a module same name with core module', () => { + const moduleMap = ModuleMap.create('/'); + const resolver = new Resolver(moduleMap, { + moduleNameMapper: [ + { + moduleName: '$1', + regex: /^constants$/, + }, + ], + } as ResolverConfig); + const isCore = resolver.isCoreModule('constants'); + expect(isCore).toEqual(false); + }); }); describe('findNodeModule', () => { From e6442d4cc0919ae643e5de7ea5b89b64f69188ab Mon Sep 17 00:00:00 2001 From: Hieu Lam Date: Wed, 12 Feb 2020 03:15:02 +0700 Subject: [PATCH 3/6] docs: update change log to describe PR --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a313de73be80..cf3c69364ccd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - `[jest-snapshot]` Properly indent new snapshots in the presences of existing ones ([#9523](https://github.com/facebook/jest/pull/9523)) - `[jest-transform]` Correct sourcemap behavior for transformed and instrumented code ([#9460](https://github.com/facebook/jest/pull/9460)) - `[pretty-format]` Export `OldPlugin` type ([#9491](https://github.com/facebook/jest/pull/9491)) +- `[jest-resolve]` Fix `moduleNameMapper` does not work with core modules name ([#9563](https://github.com/facebook/jest/pull/9563)) ### Chore & Maintenance From 18c2dc491278bccc69b9681c6bb8313e0a0b5e6c Mon Sep 17 00:00:00 2001 From: Hieu Lam Date: Wed, 12 Feb 2020 09:02:17 +0700 Subject: [PATCH 4/6] chore: reorder info in changelog and set result type for is alias module helper --- CHANGELOG.md | 2 +- packages/jest-resolve/src/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf3c69364ccd..8596c878de23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,12 +13,12 @@ - `[jest-matcher-utils]` Fix diff highlight of symbol-keyed object. ([#9499](https://github.com/facebook/jest/pull/9499)) - `[jest-resolve]` Fix module identity preservation with symlinks and browser field resolution ([#9511](https://github.com/facebook/jest/pull/9511)) - `[jest-resolve]` Do not confuse directories with files ([#8912](https://github.com/facebook/jest/pull/8912)) +- `[jest-resolve]` Fix `moduleNameMapper` does not work with core modules name ([#9563](https://github.com/facebook/jest/pull/9563)) - `[jest-runtime]` Reset `isolateModules` if it fails ([#9541](https://github.com/facebook/jest/pull/9541)) - `[jest-snapshot]` Downgrade semver to v6 to support node 8 ([#9451](https://github.com/facebook/jest/pull/9451)) - `[jest-snapshot]` Properly indent new snapshots in the presences of existing ones ([#9523](https://github.com/facebook/jest/pull/9523)) - `[jest-transform]` Correct sourcemap behavior for transformed and instrumented code ([#9460](https://github.com/facebook/jest/pull/9460)) - `[pretty-format]` Export `OldPlugin` type ([#9491](https://github.com/facebook/jest/pull/9491)) -- `[jest-resolve]` Fix `moduleNameMapper` does not work with core modules name ([#9563](https://github.com/facebook/jest/pull/9563)) ### Chore & Maintenance diff --git a/packages/jest-resolve/src/index.ts b/packages/jest-resolve/src/index.ts index 003e93d3576f..ec6c3ab48657 100644 --- a/packages/jest-resolve/src/index.ts +++ b/packages/jest-resolve/src/index.ts @@ -218,7 +218,7 @@ class Resolver { ); } - private _isAliasModule(moduleName: string) { + private _isAliasModule(moduleName: string): boolean { const moduleNameMapper = this._options.moduleNameMapper; if (!moduleNameMapper) { return false; From edb25ffcc971cc66b7607322cb26747d97a7342b Mon Sep 17 00:00:00 2001 From: Hieu Lam Date: Wed, 12 Feb 2020 09:37:01 +0700 Subject: [PATCH 5/6] fix: update test snapshot for moduleNameWrapper --- e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap b/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap index b7f122ffdc54..0ea10ceef1a3 100644 --- a/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap +++ b/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap @@ -36,7 +36,7 @@ FAIL __tests__/index.js 12 | module.exports = () => 'test'; 13 | - at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:507:17) + at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:519:17) at Object.require (index.js:10:1) `; @@ -65,6 +65,6 @@ FAIL __tests__/index.js 12 | module.exports = () => 'test'; 13 | - at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:507:17) + at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:519:17) at Object.require (index.js:10:1) `; From 5b11dfb010c85c6958df79cce2d10ec953cd2866 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Wed, 12 Feb 2020 09:00:44 +0100 Subject: [PATCH 6/6] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8596c878de23..e0efdc0b12c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ - `[jest-matcher-utils]` Fix diff highlight of symbol-keyed object. ([#9499](https://github.com/facebook/jest/pull/9499)) - `[jest-resolve]` Fix module identity preservation with symlinks and browser field resolution ([#9511](https://github.com/facebook/jest/pull/9511)) - `[jest-resolve]` Do not confuse directories with files ([#8912](https://github.com/facebook/jest/pull/8912)) -- `[jest-resolve]` Fix `moduleNameMapper` does not work with core modules name ([#9563](https://github.com/facebook/jest/pull/9563)) +- `[jest-resolve]` `moduleNameMapper` should take precedence over Node core modules ([#9563](https://github.com/facebook/jest/pull/9563)) - `[jest-runtime]` Reset `isolateModules` if it fails ([#9541](https://github.com/facebook/jest/pull/9541)) - `[jest-snapshot]` Downgrade semver to v6 to support node 8 ([#9451](https://github.com/facebook/jest/pull/9451)) - `[jest-snapshot]` Properly indent new snapshots in the presences of existing ones ([#9523](https://github.com/facebook/jest/pull/9523))