From 62bdf6fa60080f8de4fd468048727749867289f6 Mon Sep 17 00:00:00 2001 From: bluwy Date: Wed, 12 Jun 2024 23:03:42 +0800 Subject: [PATCH] chore: add retry --- .../src/node/server/__tests__/watcher.spec.ts | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/packages/vite/src/node/server/__tests__/watcher.spec.ts b/packages/vite/src/node/server/__tests__/watcher.spec.ts index 026b44013816a1..ee2069f2b199fe 100644 --- a/packages/vite/src/node/server/__tests__/watcher.spec.ts +++ b/packages/vite/src/node/server/__tests__/watcher.spec.ts @@ -39,14 +39,30 @@ describe('watcher configuration', () => { ) server = await createServer({ root }) await new Promise((resolve) => server!.watcher.once('ready', resolve)) - const watchedDirs = Object.keys(server.watcher.getWatched()) - expect(watchedDirs).toEqual( - expect.arrayContaining([ - root, - resolve(root, '../config-deps'), - resolve(root, '../custom-env'), - resolve(root, '../custom-public'), - ]), - ) + // At this point, there's still a chance that chokidar has not watch all the necessary directories yet + // so we have to retry here for a bit + await withRetry(() => { + const watchedDirs = Object.keys(server!.watcher.getWatched()) + expect(watchedDirs).toEqual( + expect.arrayContaining([ + root, + resolve(root, '../config-deps'), + resolve(root, '../custom-env'), + resolve(root, '../custom-public'), + ]), + ) + }) }) }) + +async function withRetry(func: () => Promise | void): Promise { + const maxTries = process.env.CI ? 3 : 1 + for (let tries = 0; tries < maxTries; tries++) { + try { + await func() + return + } catch {} + await new Promise((r) => setTimeout(r, 50)) + } + await func() +}