@@ -555,6 +555,100 @@ describe('HasteMap', () => {
555555 } ) ;
556556 } ) ;
557557
558+ it ( 'correctly handles platform-specific file additions' , async ( ) => {
559+ mockFs = Object . create ( null ) ;
560+ mockFs [ '/fruits/strawberry.js' ] = [
561+ '/**' ,
562+ ' * @providesModule Strawberry' ,
563+ ' */' ,
564+ 'const Banana = require("Banana");' ,
565+ ] . join ( '\n' ) ;
566+ let data ;
567+ ( { __hasteMapForTest : data } = await new HasteMap ( defaultConfig ) . build ( ) ) ;
568+ expect ( data . map [ 'Strawberry' ] ) . toEqual ( {
569+ g : [ '/fruits/strawberry.js' , 0 ] ,
570+ } ) ;
571+
572+ delete mockFs [ '/fruits/strawberry.ios.js' ] ;
573+ mockChangedFiles = object ( {
574+ '/fruits/strawberry.ios.js' : [
575+ '/**' ,
576+ ' * @providesModule Strawberry' ,
577+ ' */' ,
578+ 'const Raspberry = require("Raspberry");' ,
579+ ] . join ( '\n' ) ,
580+ } ) ;
581+ mockClocks = object ( { '/fruits' : 'c:fake-clock:3' } ) ;
582+ ( { __hasteMapForTest : data } = await new HasteMap ( defaultConfig ) . build ( ) ) ;
583+ expect ( data . map [ 'Strawberry' ] ) . toEqual ( {
584+ g : [ '/fruits/strawberry.js' , 0 ] ,
585+ ios : [ '/fruits/strawberry.ios.js' , 0 ] ,
586+ } ) ;
587+ } ) ;
588+
589+ it ( 'correctly handles platform-specific file deletions (broken)' , async ( ) => {
590+ mockFs = Object . create ( null ) ;
591+ mockFs [ '/fruits/strawberry.js' ] = [
592+ '/**' ,
593+ ' * @providesModule Strawberry' ,
594+ ' */' ,
595+ 'const Banana = require("Banana");' ,
596+ ] . join ( '\n' ) ;
597+ mockFs [ '/fruits/strawberry.ios.js' ] = [
598+ '/**' ,
599+ ' * @providesModule Strawberry' ,
600+ ' */' ,
601+ 'const Raspberry = require("Raspberry");' ,
602+ ] . join ( '\n' ) ;
603+ let data ;
604+ ( { __hasteMapForTest : data } = await new HasteMap ( defaultConfig ) . build ( ) ) ;
605+ expect ( data . map [ 'Strawberry' ] ) . toEqual ( {
606+ g : [ '/fruits/strawberry.js' , 0 ] ,
607+ ios : [ '/fruits/strawberry.ios.js' , 0 ] ,
608+ } ) ;
609+
610+ delete mockFs [ '/fruits/strawberry.ios.js' ] ;
611+ mockChangedFiles = object ( { '/fruits/strawberry.ios.js' : null } ) ;
612+ mockClocks = object ( { '/fruits' : 'c:fake-clock:3' } ) ;
613+ ( { __hasteMapForTest : data } = await new HasteMap ( defaultConfig ) . build ( ) ) ;
614+ expect ( data . map [ 'Strawberry' ] ) . toEqual ( {
615+ g : [ '/fruits/strawberry.js' , 0 ] ,
616+ // FIXME: this file should NOT exist anymore!
617+ ios : [ '/fruits/strawberry.ios.js' , 0 ] ,
618+ } ) ;
619+ } ) ;
620+
621+ it ( 'correctly handles platform-specific file renames' , async ( ) => {
622+ mockFs = Object . create ( null ) ;
623+ mockFs [ '/fruits/strawberry.ios.js' ] = [
624+ '/**' ,
625+ ' * @providesModule Strawberry' ,
626+ ' */' ,
627+ 'const Raspberry = require("Raspberry");' ,
628+ ] . join ( '\n' ) ;
629+ let data ;
630+ ( { __hasteMapForTest : data } = await new HasteMap ( defaultConfig ) . build ( ) ) ;
631+ expect ( data . map [ 'Strawberry' ] ) . toEqual ( {
632+ ios : [ '/fruits/strawberry.ios.js' , 0 ] ,
633+ } ) ;
634+
635+ delete mockFs [ '/fruits/strawberry.ios.js' ] ;
636+ mockChangedFiles = object ( {
637+ '/fruits/strawberry.ios.js' : null ,
638+ '/fruits/strawberry.js' : [
639+ '/**' ,
640+ ' * @providesModule Strawberry' ,
641+ ' */' ,
642+ 'const Banana = require("Banana");' ,
643+ ] . join ( '\n' ) ,
644+ } ) ;
645+ mockClocks = object ( { '/fruits' : 'c:fake-clock:3' } ) ;
646+ ( { __hasteMapForTest : data } = await new HasteMap ( defaultConfig ) . build ( ) ) ;
647+ expect ( data . map [ 'Strawberry' ] ) . toEqual ( {
648+ g : [ '/fruits/strawberry.js' , 0 ] ,
649+ } ) ;
650+ } ) ;
651+
558652 describe ( 'duplicate modules' , ( ) => {
559653 beforeEach ( async ( ) => {
560654 mockFs [ '/fruits/another_strawberry.js' ] = [
0 commit comments