react / wstein / node_modules / browserify / node_modules / browser-resolve / test / modules-sync.js
80529 viewsvar assert = require('assert');1var resolve = require('../');23var fixtures_dir = __dirname + '/fixtures/node_modules';45// no package.json, load index.js6test('index.js of module dir', function() {7var path = resolve.sync('module-a', { paths: [ fixtures_dir ], package: { main: 'fixtures' } });8assert.equal(path, require.resolve('./fixtures/node_modules/module-a/index'));9});1011// package.json main field specifies other location12test('alternate main', function() {13var path = resolve.sync('module-b', { paths: [ fixtures_dir ], package: { main: 'fixtures' } });14assert.equal(path, require.resolve('./fixtures/node_modules/module-b/main'));15});1617// package.json has 'browser' field which is a string18test('string browser field as main', function() {19var path = resolve.sync('module-c', { paths: [ fixtures_dir ], package: { main: 'fixtures' } });20assert.equal(path, require.resolve('./fixtures/node_modules/module-c/browser'));21});2223// package.json has 'browser' field which is a string24test('string browser field as main - require subfile', function() {25var parent = {26filename: fixtures_dir + '/module-c/browser.js',27paths: [ fixtures_dir + '/module-c/node_modules' ],28package: { main: './browser.js' }29};3031var path = resolve.sync('./bar', parent);32assert.equal(path, require.resolve('./fixtures/node_modules/module-c/bar'));33});3435// package.json has browser field as object36// one of the keys replaces the main file37// this would be done if the user needed to replace main and some other module38test('object browser field as main', function() {39var path = resolve.sync('module-d', { paths: [ fixtures_dir ], package: { main: 'fixtures' } });40assert.equal(path, require.resolve('./fixtures/node_modules/module-d/browser'));41});4243// package.json has browser field as object44// one of the keys replaces the main file45// however the main has no prefix and browser uses ./ prefix for the same file46test('object browser field as main', function() {47var path = resolve.sync('module-k', { paths: [ fixtures_dir ], package: { main: 'fixtures' } });48assert.equal(path, require.resolve('./fixtures/node_modules/module-k/browser'));49});5051// browser field in package.json maps ./foo.js -> ./browser.js52// when we resolve ./foo while in module-e, this mapping should take effect53// the result is that ./foo resolves to ./browser54test('object browser field replace file', function() {55var parent = {56filename: fixtures_dir + '/module-e/main.js',57package: { main: './main.js' }58};5960var path = resolve.sync('./foo', parent);61assert.equal(path, require.resolve('./fixtures/node_modules/module-e/browser'));62});6364// browser field in package.json maps "module" -> "alternate module"65test('test foobar -> module-b replacement', function() {66var parent = {67filename: fixtures_dir + '/module-h/index.js',68package: { main: './index.js' }69};7071var path = resolve.sync('foobar', parent);72assert.equal(path, require.resolve('./fixtures/node_modules/module-b/main'));73});7475// same as above but replacing core76test('test core -> module-c replacement', function() {77var parent = {78filename: fixtures_dir + '/module-h/index.js',79package: { main: './index.js' }80};8182var path = resolve.sync('querystring', parent);83assert.equal(path, require.resolve('./fixtures/node_modules/module-c/browser'));84});8586// browser field in package.json maps "module" -> "alternate module"87test('test foobar -> module-b replacement with transform', function() {88var parent = {89filename: fixtures_dir + '/module-i/index.js',90package: { main: './index.js' }91};9293var path = resolve.sync('foobar', parent);94assert.equal(path, require.resolve('./fixtures/node_modules/module-b/main'));95});9697test('test foobar -> module-i replacement with transform in replacement', function() {98var parent = {99filename: fixtures_dir + '/module-j/index.js',100package: { main: './index.js' }101};102103var path = resolve.sync('foobar', parent);104assert.equal(path, require.resolve('./fixtures/node_modules/module-i/index'));105});106107// same as above, but without a paths field in parent108// should still checks paths on the filename of parent109test('object browser field replace file - no paths', function() {110var parent = {111filename: fixtures_dir + '/module-f/lib/main.js',112package: { main: './lib/main.js' }113};114115var path = resolve.sync('./foo', parent);116assert.equal(path, require.resolve('./fixtures/node_modules/module-f/lib/browser'));117});118119test('replace module in browser field object', function() {120var parent = {121filename: fixtures_dir + '/module-g/index.js',122package: { main: './index.js' }123};124125var path = resolve.sync('foobar', parent);126assert.equal(path, require.resolve('./fixtures/node_modules/module-g/foobar-browser'));127});128129test('override engine shim', function() {130var parent = {131filename: fixtures_dir + '/override-engine-shim/index.js',132package: { main: './index.js' },133modules: { url: "wonderland" }134};135var path = resolve.sync('url', parent);136assert.equal(path, require.resolve('./fixtures/node_modules/override-engine-shim/url-browser'));137});138139test('alt-browser field', function() {140var parent = {141filename: fixtures_dir + '/alt-browser-field/index.js',142package: { main: './index.js' },143browser: 'chromeapp'144};145146var path = resolve.sync('url', parent);147assert.equal(path, require.resolve('./fixtures/node_modules/alt-browser-field/url-chromeapp'));148});149150151