@@ -137,6 +137,35 @@ test('packageReader reads main file', t => {
137137 } ) ;
138138} ) ;
139139
140+ test ( 'packageReader reads resource file which is actually main' , t => {
141+ getReader ( 'foo' , {
142+ 'node_modules/foo/package.json' : '{"name":"foo", "main": "index"}' ,
143+ 'node_modules/foo/index.js' : "lorem"
144+ } ) . then ( r => {
145+ r . readResource ( 'index' ) . then (
146+ unit => {
147+ t . equal ( r . version , 'N/A' ) ;
148+ t . deepEqual ( unit , {
149+ path : 'node_modules/foo/index.js' ,
150+ contents : 'lorem' ,
151+ moduleId : 'foo/index' ,
152+ packageName : 'foo' ,
153+ packageMainPath : 'index.js' ,
154+ alias : 'foo' ,
155+ sourceMap : undefined
156+ } ) ;
157+
158+ t . equal ( r . name , 'foo' ) ;
159+ t . equal ( r . mainPath , 'index.js' ) ;
160+ t . deepEqual ( r . browserReplacement , { } ) ;
161+ } ,
162+ err => {
163+ t . fail ( err . message ) ;
164+ }
165+ ) . then ( t . end ) ;
166+ } ) ;
167+ } ) ;
168+
140169test ( 'packageReader rejects invalid package.json' , t => {
141170 getReader ( 'foo' , {
142171 'node_modules/foo/package.json' : '{"name":"foo", "main": "index"' ,
@@ -427,6 +456,34 @@ test('packageReader reads deep relative resource', t => {
427456 } ) ;
428457} ) ;
429458
459+ test ( 'packageReader reads deep relative resource which is actually main' , t => {
460+ getReader ( 'foo' , {
461+ 'node_modules/foo/package.json' : '{"name":"foo", "main": "dist/cjs/main"}' ,
462+ 'node_modules/foo/dist/cjs/main.js' : 'lorem' ,
463+ } ) . then ( r => {
464+ r . readResource ( 'main' ) . then (
465+ unit => {
466+ t . deepEqual ( unit , {
467+ path : 'node_modules/foo/dist/cjs/main.js' ,
468+ contents : 'lorem' ,
469+ moduleId : 'foo/dist/cjs/main' ,
470+ packageName : 'foo' ,
471+ packageMainPath : 'dist/cjs/main.js' ,
472+ alias : [ 'foo' , 'foo/main' ] ,
473+ sourceMap : undefined
474+ } ) ;
475+
476+ t . equal ( r . name , 'foo' ) ;
477+ t . equal ( r . mainPath , 'dist/cjs/main.js' ) ;
478+ t . deepEqual ( r . browserReplacement , { } ) ;
479+ } ,
480+ err => {
481+ t . fail ( err . message ) ;
482+ }
483+ ) . then ( t . end ) ;
484+ } ) ;
485+ } ) ;
486+
430487test ( 'packageReader reads json resouce' , t => {
431488 getReader ( 'foo' , {
432489 'node_modules/foo/package.json' : '{"name":"foo", "main": "dist/cjs/main"}' ,
@@ -684,6 +741,41 @@ test('packageReader uses browser replacement in package.json to normalize main r
684741 } ) ;
685742} ) ;
686743
744+ test ( 'packageReader uses browser replacement in package.json to normalize resource read which is actually main' , t => {
745+ getReader ( 'foo' , {
746+ 'node_modules/foo/package.json' : `{
747+ "name": "foo",
748+ "main": "index",
749+ "browser": {
750+ "./index.js": "./browser.js"
751+ }
752+ }` ,
753+ 'node_modules/foo/index.js' : "index" ,
754+ 'node_modules/foo/browser.js' : "browser"
755+ } ) . then ( r => {
756+ r . readResource ( 'browser' ) . then (
757+ unit => {
758+ t . deepEqual ( unit , {
759+ path : 'node_modules/foo/browser.js' ,
760+ contents : "browser" ,
761+ moduleId : 'foo/browser' ,
762+ packageName : 'foo' ,
763+ packageMainPath : 'browser.js' ,
764+ alias : 'foo' ,
765+ replacement : { './index' : './browser' } ,
766+ sourceMap : undefined
767+ } ) ;
768+
769+ t . equal ( r . name , 'foo' ) ;
770+ t . equal ( r . mainPath , 'browser.js' ) ;
771+ } ,
772+ err => {
773+ t . fail ( err . message ) ;
774+ }
775+ ) . then ( t . end ) ;
776+ } ) ;
777+ } ) ;
778+
687779test ( 'packageReader uses browser replacement in package.json to normalize main replacement' , t => {
688780 getReader ( 'foo' , {
689781 'node_modules/foo/package.json' : `{
0 commit comments