From 9a7e18701ec8e09f77b2216650f23f240a70dbd7 Mon Sep 17 00:00:00 2001 From: Christopher Fujino Date: Fri, 3 Feb 2023 11:24:41 -0800 Subject: [PATCH] [flutter_tools] fix Cannot delete file ENOENT from fuchsia_asset_builder (#119867) * fix * add test --- .../flutter_tools/lib/src/base/config.dart | 6 +++++- .../test/general.shard/config_test.dart | 20 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/flutter_tools/lib/src/base/config.dart b/packages/flutter_tools/lib/src/base/config.dart index b14f9abf295..804cef0673f 100644 --- a/packages/flutter_tools/lib/src/base/config.dart +++ b/packages/flutter_tools/lib/src/base/config.dart @@ -116,7 +116,11 @@ class Config { if (managed) { rethrow; } else { - _file.deleteSync(); + try { + _file.deleteSync(); + } on FileSystemException { + // ignore + } } } on Exception catch (err) { _logger diff --git a/packages/flutter_tools/test/general.shard/config_test.dart b/packages/flutter_tools/test/general.shard/config_test.dart index c506680d130..587875630fd 100644 --- a/packages/flutter_tools/test/general.shard/config_test.dart +++ b/packages/flutter_tools/test/general.shard/config_test.dart @@ -130,6 +130,26 @@ void main() { expect(bufferLogger.errorText, contains(r'sudo chown -R $(whoami) /testfile')); }); + testWithoutContext('Config.createForTesting does not error when failing to delete a file', () { + final BufferLogger bufferLogger = BufferLogger.test(); + + final FileExceptionHandler handler = FileExceptionHandler(); + final MemoryFileSystem fs = MemoryFileSystem.test(opHandle: handler.opHandle); + final File file = fs.file('testfile') + // We write invalid JSON so that we test catching a `FormatException` + ..writeAsStringSync('{"This is not valid JSON"'); + handler.addError( + file, + FileSystemOp.delete, + const FileSystemException( + "Cannot delete file, path = 'testfile' (OS Error: No such file or directory, errno = 2)", + ), + ); + + // Should not throw a FileSystemException + Config.createForTesting(file, bufferLogger); + }); + testWithoutContext('Config in home dir is used if it exists', () { memoryFileSystem.file('.flutter_example').writeAsStringSync('{"hello":"bar"}'); config = Config(