Skip to content

Commit b57160c

Browse files
author
Jean Lauliac
committed
jest-haste-map: add test to demonstrate broken behavior for platform-specific files
1 parent fc14ac8 commit b57160c

1 file changed

Lines changed: 94 additions & 0 deletions

File tree

packages/jest-haste-map/src/__tests__/index.test.js

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)