diff --git a/.travis.yml b/.travis.yml index ed4c1ca..d5cb0ac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,11 @@ language: node_js node_js: - 6 - 8 +- 9 before_install: - sudo apt-get -qq update - sudo apt-get install -y realpath + +script: +- npm test diff --git a/lib/manager.js b/lib/manager.js index ee447c7..59c5e90 100644 --- a/lib/manager.js +++ b/lib/manager.js @@ -91,7 +91,7 @@ function resolveModulePath(filepath, rootDir) { if(legacy) { legacy = process.env.NODE_PATH; // cache previous value rootDir = rootDir.replace(/\/{1,}$/, ""); // strip trailing slashes, to be safe - process.env.NODE_PATH = rootDir + "/node_modules"; + process.env.NODE_PATH = `${rootDir}:${rootDir}/node_modules`; require("module").Module._initPaths(); } diff --git a/test/fixtures/dummy/index.js b/test/fixtures/dummy/index.js new file mode 100644 index 0000000..5d36d63 --- /dev/null +++ b/test/fixtures/dummy/index.js @@ -0,0 +1 @@ +export default "SRC"; diff --git a/test/fixtures/dummy/src.js b/test/fixtures/dummy/src.js new file mode 100644 index 0000000..5d36d63 --- /dev/null +++ b/test/fixtures/dummy/src.js @@ -0,0 +1 @@ +export default "SRC"; diff --git a/test/fixtures/node_modules/dummy/index.js b/test/fixtures/node_modules/dummy/index.js new file mode 100644 index 0000000..7f3e7f0 --- /dev/null +++ b/test/fixtures/node_modules/dummy/index.js @@ -0,0 +1 @@ +void 0; diff --git a/test/fixtures/node_modules/dummy/pkg.js b/test/fixtures/node_modules/dummy/pkg.js new file mode 100644 index 0000000..7f3e7f0 --- /dev/null +++ b/test/fixtures/node_modules/dummy/pkg.js @@ -0,0 +1 @@ +void 0; diff --git a/test/test_manager.js b/test/test_manager.js new file mode 100644 index 0000000..49330d8 --- /dev/null +++ b/test/test_manager.js @@ -0,0 +1,39 @@ +/* global describe, before, after, it */ +"use strict"; + +let AssetManager = require("../lib/manager"); +let path = require("path"); +let assert = require("assert"); + +let assertSame = assert.strictEqual; + +describe("asset manager", _ => { + let cwd; + + before(() => { + cwd = process.cwd(); + }); + + after(() => { + process.chdir(cwd); + }); + + it("resolves file paths for local modules and third-party packages", () => { + let root = path.resolve(__dirname, "fixtures"); + process.chdir(root); + + let { resolvePath } = new AssetManager(root); + + let filepath = resolvePath("dummy/src.js"); + assertSame(path.relative(root, filepath), "dummy/src.js"); + + filepath = resolvePath("dummy/pkg.js"); + assertSame(path.relative(root, filepath), "node_modules/dummy/pkg.js"); + + // local modules take precedence over third-party packages + ["dummy", "dummy/index", "dummy/index.js"].forEach(module => { + let filepath = resolvePath(module); + assertSame(path.relative(root, filepath), "dummy/index.js"); + }); + }); +});