From 5ca519de299e6f0d34f795d314d2aa6fc6199ac4 Mon Sep 17 00:00:00 2001 From: Christoph Pojer Date: Tue, 2 Feb 2016 17:49:50 -0800 Subject: [PATCH] Add mocks for packages to resolution responses Summary: Right now, a mock called `debug.js` shadows a node module called `debug`. When I made mocking more strict I didn't realize that it didn't include those mocks any more because requiring `debug` would result in a module like `debug/node.js` which doesn't have a mock associated with it. This diff changes it so it looks at the associated `package.json` to match the name up to mocks. This is the least invasive non-breaking change I can make right now. Yes, mocking strategies are basically fucked but I don't want the haste2 integration to have even more breaking changes right now. Consider this code to be temporary, I'll fix this and make the mocking system more sane mid-term. public Reviewed By: davidaurelio Differential Revision: D2889198 fb-gh-sync-id: 58db852ed9acad830538245f7dc347365fe4de38 --- .../DependencyGraph/ResolutionRequest.js | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/packager/react-packager/src/DependencyResolver/DependencyGraph/ResolutionRequest.js b/packager/react-packager/src/DependencyResolver/DependencyGraph/ResolutionRequest.js index e95237e64..879c53efa 100644 --- a/packager/react-packager/src/DependencyResolver/DependencyGraph/ResolutionRequest.js +++ b/packager/react-packager/src/DependencyResolver/DependencyGraph/ResolutionRequest.js @@ -118,14 +118,21 @@ class ResolutionRequest { ).then((dependencies) => [depNames, dependencies]) ).then(([depNames, dependencies]) => { if (allMocks) { - return mod.getName().then(name => { - if (allMocks[name]) { - const mockModule = - this._moduleCache.getModule(allMocks[name]); - depNames.push(name); - dependencies.push(mockModule); - mocks[name] = allMocks[name]; - } + const list = [mod.getName()]; + const pkg = mod.getPackage(); + if (pkg) { + list.push(pkg.getName()); + } + return Promise.all(list).then(names => { + names.forEach(name => { + if (allMocks[name] && !mocks[name]) { + const mockModule = + this._moduleCache.getModule(allMocks[name]); + depNames.push(name); + dependencies.push(mockModule); + mocks[name] = allMocks[name]; + } + }); return [depNames, dependencies]; }); } @@ -141,7 +148,7 @@ class ResolutionRequest { // module backing them. If a dependency cannot be found but there // exists a mock with the desired ID, resolve it and add it as // a dependency. - if (allMocks && allMocks[name]) { + if (allMocks && allMocks[name] && !mocks[name]) { const mockModule = this._moduleCache.getModule(allMocks[name]); mocks[name] = allMocks[name]; return filteredPairs.push([name, mockModule]);