From 1dfc9b728926c74ad589af5010983a373d45dcf5 Mon Sep 17 00:00:00 2001 From: Robert Jackson Date: Fri, 12 Aug 2016 22:00:28 -0400 Subject: [PATCH] Failing test for `hashForDep(somePathDeepInPackage)`. When calling: ``` hashForDep('/some/fqdn/package-name/lib/utils/'); ``` An error with the following stack is triggered: ``` Error: Cannot find module '/Users/rjck/Source/tildeio/glimmer/node_modules/emberjs-build/lib/utils//package.json' at Function.Module._resolveFilename (module.js:440:15) at Function.Module._load (module.js:388:25) at Module.require (module.js:468:17) at require (internal/module.js:20:19) at pkg (/Users/rjck/Source/tildeio/glimmer/node_modules/hash-for-dep/lib/pkg.js:19:20) at statPathsFor (/Users/rjck/Source/tildeio/glimmer/node_modules/hash-for-dep/lib/stat-paths-for.js:13:20) at hashForDep (/Users/rjck/Source/tildeio/glimmer/node_modules/hash-for-dep/index.js:15:21) at Babel.optionsHash (/Users/rjck/Source/tildeio/glimmer/node_modules/broccoli-babel-transpiler/index.js:141:27) at Babel.cacheKeyProcessString (/Users/rjck/Source/tildeio/glimmer/node_modules/broccoli-babel-transpiler/index.js:186:15) at Object.module.exports.processString (/Users/rjck/Source/tildeio/glimmer/node_modules/broccoli-persistent-filter/lib/strategies/persistent.js:26:19) at Processor.processString (/Users/rjck/Source/tildeio/glimmer/node_modules/broccoli-persistent-filter/lib/processor.js:20:25) at /Users/rjck/Source/tildeio/glimmer/node_modules/broccoli-persistent-filter/index.js:231:16 at lib$rsvp$$internal$$initializePromise (/Users/rjck/Source/tildeio/glimmer/node_modules/rsvp/dist/rsvp.js:1084:9) at new lib$rsvp$promise$$Promise (/Users/rjck/Source/tildeio/glimmer/node_modules/rsvp/dist/rsvp.js:546:53) at invoke (/Users/rjck/Source/tildeio/glimmer/node_modules/broccoli-persistent-filter/index.js:230:10) at Babel.Filter.processFile (/Users/rjck/Source/tildeio/glimmer/node_modules/broccoli-persistent-filter/index.js:248:16) ``` This is because `module-base-dir` does not attempt to resolve the `package.json` above the provided path. Perhaps adding: ``` resolve.sync('package.json', { base: pathProvided}) ``` Would fix, but I am uncertain... --- tests/fixtures/node_modules/deep-files/index.js | 0 tests/fixtures/node_modules/deep-files/package.json | 8 ++++++++ tests/fixtures/node_modules/deep-files/utils/foo.js | 0 tests/module-base-dir-test.js | 11 ++++++++++- 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/node_modules/deep-files/index.js create mode 100644 tests/fixtures/node_modules/deep-files/package.json create mode 100644 tests/fixtures/node_modules/deep-files/utils/foo.js diff --git a/tests/fixtures/node_modules/deep-files/index.js b/tests/fixtures/node_modules/deep-files/index.js new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/node_modules/deep-files/package.json b/tests/fixtures/node_modules/deep-files/package.json new file mode 100644 index 0000000..f565b0f --- /dev/null +++ b/tests/fixtures/node_modules/deep-files/package.json @@ -0,0 +1,8 @@ +{ + "name": "deep-files", + "version": "1.0.0", + "main": "index.js", + "dependencies": { + "dedupped-child": "1.0.0" + } +} diff --git a/tests/fixtures/node_modules/deep-files/utils/foo.js b/tests/fixtures/node_modules/deep-files/utils/foo.js new file mode 100644 index 0000000..e69de29 diff --git a/tests/module-base-dir-test.js b/tests/module-base-dir-test.js index 5826d76..55ee824 100644 --- a/tests/module-base-dir-test.js +++ b/tests/module-base-dir-test.js @@ -36,4 +36,13 @@ describe('moduleBaseDir', function() { assert.equal(actual, expected); }); -}); \ No newline at end of file + + it('Handles deep path', function() { + var fixturesPath = path.join(__dirname, 'fixtures'); + var moduleName = 'deep-files'; + var moduleBaseDir = path.join(fixturesPath, 'node_modules', moduleName); + var fullPath = path.join(moduleBaseDir, 'lib', 'utils') + path.sep; + + assert.equal(getModuleBaseDir(fullPath, fullPath), moduleBaseDir); + }); +});