From 2e9cb0aa71a386a91f73f7088d115c0d96654829 Mon Sep 17 00:00:00 2001 From: Elias Yishak <42216813+eliasyishak@users.noreply.github.com> Date: Mon, 11 Dec 2023 14:35:13 -0700 Subject: [PATCH] [CP] Catch error for missing directory in `FontConfigManager` (#138496) (#139743) Closes: - https://github.com/flutter/flutter/issues/138434 We will catch any errors while attempting to clear the temp directories that don't exist for the `FontConfigManager` class --- .../lib/src/test/font_config_manager.dart | 6 +++++- .../general.shard/flutter_tester_device_test.dart | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/flutter_tools/lib/src/test/font_config_manager.dart b/packages/flutter_tools/lib/src/test/font_config_manager.dart index 92d64150359..052de458a36 100644 --- a/packages/flutter_tools/lib/src/test/font_config_manager.dart +++ b/packages/flutter_tools/lib/src/test/font_config_manager.dart @@ -34,7 +34,11 @@ class FontConfigManager { Future dispose() async { if (_fontsDirectory != null) { globals.printTrace('Deleting ${_fontsDirectory!.path}...'); - await _fontsDirectory!.delete(recursive: true); + try { + await _fontsDirectory!.delete(recursive: true); + } on FileSystemException { + // Silently exit + } _fontsDirectory = null; } } diff --git a/packages/flutter_tools/test/general.shard/flutter_tester_device_test.dart b/packages/flutter_tools/test/general.shard/flutter_tester_device_test.dart index 752100624f8..d3e035f4e7b 100644 --- a/packages/flutter_tools/test/general.shard/flutter_tester_device_test.dart +++ b/packages/flutter_tools/test/general.shard/flutter_tester_device_test.dart @@ -50,6 +50,18 @@ void main() { uriConverter: (String input) => '$input/converted', ); + testUsingContext('Missing dir error caught for FontConfigManger.dispose', () async { + final FontConfigManager fontConfigManager = FontConfigManager(); + + final Directory fontsDirectory = fileSystem.file(fontConfigManager.fontConfigFile).parent; + fontsDirectory.deleteSync(recursive: true); + + await fontConfigManager.dispose(); + }, overrides: { + FileSystem: () => fileSystem, + ProcessManager: () => processManager, + }); + group('The FLUTTER_TEST environment variable is passed to the test process', () { setUp(() { processManager = FakeProcessManager.list([]);