From a8f28fe25ec3cf27f8a15fa6dc1090e37409e670 Mon Sep 17 00:00:00 2001 From: Leonardo Villela Date: Mon, 17 Feb 2020 23:42:54 +0000 Subject: [PATCH] Use which sync interface --- .../src/crawlers/__tests__/node.test.js | 8 ++++--- packages/jest-haste-map/src/crawlers/node.ts | 23 ++++++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) 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 863ecb8c4ad2..cac3e5329ad3 100644 --- a/packages/jest-haste-map/src/crawlers/__tests__/node.test.js +++ b/packages/jest-haste-map/src/crawlers/__tests__/node.test.js @@ -124,7 +124,7 @@ jest.mock('fs', () => { }; }); -jest.mock('which', () => jest.fn().mockResolvedValue()); +jest.mock('which'); const pearMatcher = path => /pear/.test(path); const createMap = obj => new Map(Object.keys(obj).map(key => [key, obj[key]])); @@ -296,7 +296,9 @@ describe('node crawler', () => { it('uses node fs APIs on Unix based OS without find binary', () => { process.platform = 'linux'; const which = require('which'); - which.mockReturnValueOnce(Promise.reject()); + which.sync.mockImplementation(() => { + throw new Error(); + }); nodeCrawl = require('../node'); @@ -316,7 +318,7 @@ describe('node crawler', () => { }), ); expect(removedFiles).toEqual(new Map()); - expect(which).toBeCalledWith('find'); + expect(which.sync).toBeCalledWith('find'); }); }); diff --git a/packages/jest-haste-map/src/crawlers/node.ts b/packages/jest-haste-map/src/crawlers/node.ts index f3ea66c2e4d5..a60baf293cd6 100644 --- a/packages/jest-haste-map/src/crawlers/node.ts +++ b/packages/jest-haste-map/src/crawlers/node.ts @@ -22,12 +22,17 @@ type Result = Array<[/* id */ string, /* mtime */ number, /* size */ number]>; type Callback = (result: Result) => void; -function hasNativeFindSupport(forceNodeFilesystemAPI: boolean): Promise { - if (forceNodeFilesystemAPI) return Promise.reject(); +function hasNativeFindSupport(forceNodeFilesystemAPI: boolean): boolean { + if (forceNodeFilesystemAPI || process.platform === 'win32') { + return false; + } - return process.platform === 'win32' - ? Promise.reject() - : ((which('find') as unknown) as Promise); + try { + which.sync('find'); + return true; + } catch { + return false; + } } function find( @@ -202,8 +207,10 @@ export = function nodeCrawl( }); }; - hasNativeFindSupport(forceNodeFilesystemAPI) - .then(() => findNative(roots, extensions, ignore, callback)) - .catch(() => find(roots, extensions, ignore, callback)); + if (hasNativeFindSupport(forceNodeFilesystemAPI)) { + findNative(roots, extensions, ignore, callback); + } else { + find(roots, extensions, ignore, callback); + } }); };