From d56dcf37d5c4216cf89bbe2d8735f4e633d61403 Mon Sep 17 00:00:00 2001 From: Emilien Muraton Date: Thu, 26 Jul 2018 10:00:47 +0100 Subject: [PATCH] stop search if is undefined --- .../src/crawlers/__tests__/node.test.js | 18 ++++++++++++++++++ packages/jest-haste-map/src/crawlers/node.js | 5 ++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/jest-haste-map/src/crawlers/__tests__/node.test.js b/packages/jest-haste-map/src/crawlers/__tests__/node.test.js index 64362a1d0515..7734a04b143e 100644 --- a/packages/jest-haste-map/src/crawlers/__tests__/node.test.js +++ b/packages/jest-haste-map/src/crawlers/__tests__/node.test.js @@ -59,6 +59,8 @@ jest.mock('fs', () => { setTimeout(() => callback(null, ['directory', 'tomato.js']), 0); } else if (dir === '/fruits/directory') { setTimeout(() => callback(null, ['strawberry.js']), 0); + } else if (dir == '/empty') { + setTimeout(() => callback(null, null), 0); } }), stat: jest.fn(stat), @@ -217,4 +219,20 @@ describe('node crawler', () => { expect(data.files).toEqual({}); }); }); + + it('completes with undefined names', () => { + process.platform = 'win32'; + + nodeCrawl = require('../node'); + + const files = Object.create(null); + return nodeCrawl({ + data: {files}, + extensions: ['js'], + ignore: pearMatcher, + roots: ['/empty'], + }).then(data => { + expect(data.files).toEqual({}); + }); + }); }); diff --git a/packages/jest-haste-map/src/crawlers/node.js b/packages/jest-haste-map/src/crawlers/node.js index 17ce3452e757..004dd46f23a1 100644 --- a/packages/jest-haste-map/src/crawlers/node.js +++ b/packages/jest-haste-map/src/crawlers/node.js @@ -30,7 +30,10 @@ function find( activeCalls++; fs.readdir(directory, (err, names) => { activeCalls--; - + if (!names) { + callback(result); + return; + } names.forEach(file => { file = path.join(directory, file); if (ignore(file)) {