diff --git a/packages/time/get-running-time.js b/packages/time/get-running-time.js index 685f1763..4271f0d8 100644 --- a/packages/time/get-running-time.js +++ b/packages/time/get-running-time.js @@ -43,10 +43,15 @@ async function getThrottling () { } let throttlingCache +let throttlingCalculating module.exports = async function getRunningTime (file) { if (!JS_FILES.test(file)) return 0 - if (!throttlingCache) throttlingCache = await getThrottling() + if (throttlingCalculating) await throttlingCalculating + if (!throttlingCache) { + throttlingCalculating = getThrottling() + throttlingCache = await throttlingCalculating + } return getTime(file, throttlingCache) } diff --git a/packages/time/test/get-running-time.test.js b/packages/time/test/get-running-time.test.js index 56ff851f..d6b38e6e 100644 --- a/packages/time/test/get-running-time.test.js +++ b/packages/time/test/get-running-time.test.js @@ -34,3 +34,13 @@ it('uses cache', async () => { it('ignores non-JS files', async () => { expect(await getRunningTime('/a.jpg')).toEqual(0) }) + +it('works in parallel', async () => { + let times = await Promise.all([ + getRunningTime(EXAMPLE), + getRunningTime(EXAMPLE), + getRunningTime(EXAMPLE), + getRunningTime(EXAMPLE) + ]) + expect(times).toHaveLength(5) +})