From 4d275d255854e444e0eb660086e98a38ff85f05b Mon Sep 17 00:00:00 2001 From: Vitali Zaidman Date: Tue, 1 Oct 2024 13:56:18 +0100 Subject: [PATCH] test --- packages/metro-file-map/src/Watcher.js | 4 ++-- packages/metro-file-map/src/index.js | 13 +++++++------ .../__tests__/server-torn-down-test.js | 5 +++++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/metro-file-map/src/Watcher.js b/packages/metro-file-map/src/Watcher.js index 3029fe0cea..5b3c7b66b5 100644 --- a/packages/metro-file-map/src/Watcher.js +++ b/packages/metro-file-map/src/Watcher.js @@ -315,14 +315,14 @@ export class Watcher extends EventEmitter { } }); await Promise.race([ - timeoutPromise, + // timeoutPromise, creationPromise.then(() => observationPromise), ]); this._pendingHealthChecks.delete(basename); // Chain a deletion to the creation promise (which may not have even settled yet!), // don't await it, and swallow errors. This is just best-effort cleanup. // $FlowFixMe[unused-promise] - creationPromise.then(() => + await creationPromise.then(() => fs.promises.unlink(healthCheckPath).catch(() => {}), ); debug('Health check result: %o', result); diff --git a/packages/metro-file-map/src/index.js b/packages/metro-file-map/src/index.js index 47b2b4a776..f80975373a 100644 --- a/packages/metro-file-map/src/index.js +++ b/packages/metro-file-map/src/index.js @@ -725,7 +725,7 @@ export default class FileMap extends EventEmitter { if (['ENOENT', 'EACCESS'].includes(e.code)) { missingFiles.add(relativeFilePath); } else { - throw e; + // throw e; } }), ); @@ -736,11 +736,10 @@ export default class FileMap extends EventEmitter { debug('Visiting %d added/modified files.', promises.length); this._startupPerfLogger?.point('applyFileDelta_process_start'); - try { - await Promise.all(promises); - } finally { - await this._cleanup(); - } + await Promise.allSettled(promises).finally(() => { + return this._cleanup(); + }); + this._startupPerfLogger?.point('applyFileDelta_process_end'); this._startupPerfLogger?.point('applyFileDelta_add_start'); for (const relativeFilePath of missingFiles) { @@ -1122,6 +1121,8 @@ export default class FileMap extends EventEmitter { clearInterval(this._healthCheckInterval); } + await this._buildPromise; + await Promise.all(this._processedFilesPromises.values()); await this._cleanup(); diff --git a/packages/metro/src/integration_tests/__tests__/server-torn-down-test.js b/packages/metro/src/integration_tests/__tests__/server-torn-down-test.js index 85fe183db1..4ffe1cabf5 100644 --- a/packages/metro/src/integration_tests/__tests__/server-torn-down-test.js +++ b/packages/metro/src/integration_tests/__tests__/server-torn-down-test.js @@ -95,6 +95,11 @@ describe('Server torn down test', () => { }, ); + // test('symlinks', async () => { + // const symlinkTarget = await fsPromises.readlink(__filename); + + // }); + test('closing should close all handlers', async () => { const config = await Metro.loadConfig({ config: require.resolve('../metro.config.js'),