mirror of
https://github.com/flutter/flutter
synced 2024-10-13 11:42:54 +00:00
Dont crash if the tool cannot delete asset directory during debugging (#45407)
This commit is contained in:
parent
35b571ccfc
commit
b54bb6abbb
|
@ -10,6 +10,7 @@ import 'package:pool/pool.dart';
|
|||
import 'asset.dart';
|
||||
import 'base/common.dart';
|
||||
import 'base/file_system.dart';
|
||||
import 'base/logger.dart';
|
||||
import 'build_info.dart';
|
||||
import 'build_system/build_system.dart';
|
||||
import 'build_system/depfile.dart';
|
||||
|
@ -173,9 +174,18 @@ Future<AssetBundle> buildAssets({
|
|||
Future<void> writeBundle(
|
||||
Directory bundleDir,
|
||||
Map<String, DevFSContent> assetEntries,
|
||||
{ Logger loggerOverride }
|
||||
) async {
|
||||
loggerOverride ??= logger;
|
||||
if (bundleDir.existsSync()) {
|
||||
bundleDir.deleteSync(recursive: true);
|
||||
try {
|
||||
bundleDir.deleteSync(recursive: true);
|
||||
} on FileSystemException catch (err) {
|
||||
loggerOverride.printError(
|
||||
'Failed to clean up asset directory ${bundleDir.path}: $err\n'
|
||||
'To clean build artifacts, use the command "flutter clean".'
|
||||
);
|
||||
}
|
||||
}
|
||||
bundleDir.createSync(recursive: true);
|
||||
|
||||
|
|
|
@ -9,8 +9,12 @@ import 'package:file/memory.dart';
|
|||
|
||||
import 'package:flutter_tools/src/asset.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/base/logger.dart';
|
||||
import 'package:flutter_tools/src/base/platform.dart';
|
||||
import 'package:flutter_tools/src/bundle.dart';
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/devfs.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
|
||||
import '../src/common.dart';
|
||||
import '../src/context.dart';
|
||||
|
@ -179,4 +183,18 @@ flutter:
|
|||
});
|
||||
});
|
||||
|
||||
test('Failed directory delete shows message', () async {
|
||||
final MockDirectory mockDirectory = MockDirectory();
|
||||
final BufferLogger bufferLogger = BufferLogger();
|
||||
when(mockDirectory.existsSync()).thenReturn(true);
|
||||
when(mockDirectory.deleteSync(recursive: true)).thenThrow(const FileSystemException('ABCD'));
|
||||
|
||||
await writeBundle(mockDirectory, <String, DevFSContent>{}, loggerOverride: bufferLogger);
|
||||
|
||||
verify(mockDirectory.createSync(recursive: true)).called(1);
|
||||
expect(bufferLogger.errorText, contains('ABCD'));
|
||||
});
|
||||
}
|
||||
|
||||
class MockDirectory extends Mock implements Directory {}
|
||||
|
||||
|
|
Loading…
Reference in a new issue