From 18e871228a2c59f1f6d1a918bbffe9dcb0271e99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Thu, 1 Nov 2018 01:09:19 +0100 Subject: [PATCH 1/4] fix: unable to resolve path to mapped file with custom platform --- e2e/resolve/__tests__/resolve.test.js | 5 +++++ e2e/resolve/package.json | 9 +++++++-- e2e/resolve/test2mapper.native.js | 8 ++++++++ .../jest-resolve/src/__tests__/resolve.test.js | 1 + packages/jest-resolve/src/index.js | 15 ++++++++++++++- 5 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 e2e/resolve/test2mapper.native.js diff --git a/e2e/resolve/__tests__/resolve.test.js b/e2e/resolve/__tests__/resolve.test.js index 41a840c2d56d..777e73c0b50c 100644 --- a/e2e/resolve/__tests__/resolve.test.js +++ b/e2e/resolve/__tests__/resolve.test.js @@ -47,6 +47,11 @@ test('should resolve filename.native.js', () => { expect(platform.extension).toBe('native.js'); }); +test('should resolve filename.native.js with moduleNameMapper', () => { + expect(testRequire('test2')).not.toThrow(); + expect(platform.extension).toBe('native.js'); +}); + test('should resolve filename.js', () => { expect(testRequire('../test3')).not.toThrow(); expect(platform.extension).toBe('js'); diff --git a/e2e/resolve/package.json b/e2e/resolve/package.json index 743e0a83f202..e8043089b289 100644 --- a/e2e/resolve/package.json +++ b/e2e/resolve/package.json @@ -2,9 +2,14 @@ "name": "custom-resolve", "jest": { "haste": { - "platforms": ["native"], + "platforms": [ + "native" + ], "defaultPlatform": "android" }, - "testEnvironment": "node" + "testEnvironment": "node", + "moduleNameMapper": { + "test2": "/test2mapper" + } } } diff --git a/e2e/resolve/test2mapper.native.js b/e2e/resolve/test2mapper.native.js new file mode 100644 index 000000000000..68a290a4b715 --- /dev/null +++ b/e2e/resolve/test2mapper.native.js @@ -0,0 +1,8 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +module.exports = {extension: 'native.js'}; diff --git a/packages/jest-resolve/src/__tests__/resolve.test.js b/packages/jest-resolve/src/__tests__/resolve.test.js index f4c75c4e6927..8d3b91d9bfb9 100644 --- a/packages/jest-resolve/src/__tests__/resolve.test.js +++ b/packages/jest-resolve/src/__tests__/resolve.test.js @@ -161,6 +161,7 @@ describe('getMockModule', () => { const moduleMap = ModuleMap.create('/'); const resolver = new Resolver(moduleMap, { + extensions: ['.js'], moduleNameMapper: [ { moduleName: '$1', diff --git a/packages/jest-resolve/src/index.js b/packages/jest-resolve/src/index.js index 7ad9ea1e960d..cf3ba0d85093 100644 --- a/packages/jest-resolve/src/index.js +++ b/packages/jest-resolve/src/index.js @@ -341,10 +341,23 @@ class Resolver { _resolveStubModuleName(from: Path, moduleName: string): ?Path { const dirname = path.dirname(from); const paths = this._options.modulePaths; - const extensions = this._options.extensions; + const extensions = this._options.extensions.slice(); const moduleDirectory = this._options.moduleDirectories; const moduleNameMapper = this._options.moduleNameMapper; const resolver = this._options.resolver; + const defaultPlatform = this._options.defaultPlatform; + + if (this._supportsNativePlatform) { + extensions.unshift( + ...this._options.extensions.map(ext => '.' + NATIVE_PLATFORM + ext), + ); + } + + if (defaultPlatform) { + extensions.unshift( + ...this._options.extensions.map(ext => '.' + defaultPlatform + ext), + ); + } if (moduleNameMapper) { for (const {moduleName: mappedModuleName, regex} of moduleNameMapper) { From 0dfaa22edd78e1ce0fe063f4fe21a4fcf8a60402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Thu, 1 Nov 2018 01:21:11 +0100 Subject: [PATCH 2/4] fixup test --- e2e/resolve/__tests__/resolve.test.js | 2 +- e2e/resolve/package.json | 2 +- e2e/resolve/test2mapper.js | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 e2e/resolve/test2mapper.js diff --git a/e2e/resolve/__tests__/resolve.test.js b/e2e/resolve/__tests__/resolve.test.js index 777e73c0b50c..e8a5571f59ef 100644 --- a/e2e/resolve/__tests__/resolve.test.js +++ b/e2e/resolve/__tests__/resolve.test.js @@ -48,7 +48,7 @@ test('should resolve filename.native.js', () => { }); test('should resolve filename.native.js with moduleNameMapper', () => { - expect(testRequire('test2')).not.toThrow(); + expect(testRequire('test2mapper')).not.toThrow(); expect(platform.extension).toBe('native.js'); }); diff --git a/e2e/resolve/package.json b/e2e/resolve/package.json index e8043089b289..f3feb16b420f 100644 --- a/e2e/resolve/package.json +++ b/e2e/resolve/package.json @@ -9,7 +9,7 @@ }, "testEnvironment": "node", "moduleNameMapper": { - "test2": "/test2mapper" + "test2mapper": "/test2mapper" } } } diff --git a/e2e/resolve/test2mapper.js b/e2e/resolve/test2mapper.js new file mode 100644 index 000000000000..a265d4b021c8 --- /dev/null +++ b/e2e/resolve/test2mapper.js @@ -0,0 +1,8 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +module.exports = {extension: '.js'}; From 3a7deaa49c75f0144f254ea3fb13a96f578a6172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Thu, 1 Nov 2018 08:21:33 +0100 Subject: [PATCH 3/4] add changelog; update snapshot --- CHANGELOG.md | 1 + e2e/__tests__/__snapshots__/module_name_mapper.test.js.snap | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42f65a4894b7..8412064e90a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,7 @@ - `[jest-config]` Use strings instead of `RegExp` instances in normalized configuration ([#7251](https://github.com/facebook/jest/pull/7251)) - `[jest-circus]` Make sure to display real duration even if time is mocked ([#7264](https://github.com/facebook/jest/pull/7264)) - `[expect]` Improves the failing message for `toStrictEqual` matcher. ([#7224](https://github.com/facebook/jest/pull/7224)) +- `[jest-resolve]` Fix not being able to resolve path to mapped file with custom platform ([#7312](https://github.com/facebook/jest/pull/7312)) ### Chore & Maintenance diff --git a/e2e/__tests__/__snapshots__/module_name_mapper.test.js.snap b/e2e/__tests__/__snapshots__/module_name_mapper.test.js.snap index 9f692951261f..0f917a0aad15 100644 --- a/e2e/__tests__/__snapshots__/module_name_mapper.test.js.snap +++ b/e2e/__tests__/__snapshots__/module_name_mapper.test.js.snap @@ -32,7 +32,7 @@ exports[`moduleNameMapper wrong configuration 1`] = ` 12 | module.exports = () => 'test'; 13 | - at packages/jest-resolve/build/index.js:410:17 + at packages/jest-resolve/build/index.js:429:17 at index.js:10:1 " From 495c2a97a566ffceba769f759b592941a4f43c84 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Thu, 1 Nov 2018 08:34:59 +0100 Subject: [PATCH 4/4] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da43fe6f2df6..1385882907c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,7 +61,7 @@ - `[jest-config]` Use strings instead of `RegExp` instances in normalized configuration ([#7251](https://github.com/facebook/jest/pull/7251)) - `[jest-circus]` Make sure to display real duration even if time is mocked ([#7264](https://github.com/facebook/jest/pull/7264)) - `[expect]` Improves the failing message for `toStrictEqual` matcher. ([#7224](https://github.com/facebook/jest/pull/7224)) -- `[jest-mock]` [**BREAKING**] Fix bugs with mock/spy result tracking of recursive functions ([#6381](https://github.com/facebook/jest/pull/6381) +- `[jest-mock]` [**BREAKING**] Fix bugs with mock/spy result tracking of recursive functions ([#6381](https://github.com/facebook/jest/pull/6381)) - `[jest-resolve]` Fix not being able to resolve path to mapped file with custom platform ([#7312](https://github.com/facebook/jest/pull/7312)) ### Chore & Maintenance