Catch failure to create directory in cache (#37871)
diff --git a/packages/flutter_tools/test/general.shard/cache_test.dart b/packages/flutter_tools/test/general.shard/cache_test.dart
index f4a8ef4..aa9d940 100644
--- a/packages/flutter_tools/test/general.shard/cache_test.dart
+++ b/packages/flutter_tools/test/general.shard/cache_test.dart
@@ -243,6 +243,27 @@
Platform: () => fakePlatform,
});
});
+
+ testUsingContext('throws tool exit on fs exception', () async {
+ final FakeCachedArtifact fakeCachedArtifact = FakeCachedArtifact(
+ cache: MockCache(),
+ requiredArtifacts: <DevelopmentArtifact>{
+ DevelopmentArtifact.android,
+ }
+ );
+ final Directory mockDirectory = MockDirectory();
+ when(fakeCachedArtifact.cache.getArtifactDirectory(any))
+ .thenReturn(mockDirectory);
+ when(mockDirectory.existsSync()).thenReturn(false);
+ when(mockDirectory.createSync(recursive: true))
+ .thenThrow(const FileSystemException());
+
+ expect(() => fakeCachedArtifact.update(<DevelopmentArtifact>{
+ DevelopmentArtifact.android,
+ }), throwsA(isInstanceOf<ToolExit>()));
+ }, overrides: <Type, Generator>{
+ FileSystem: () => MemoryFileSystem(),
+ });
}
class FakeCachedArtifact extends EngineCachedArtifact {
@@ -271,6 +292,7 @@
class MockFileSystem extends Mock implements FileSystem {}
class MockFile extends Mock implements File {}
+class MockDirectory extends Mock implements Directory {}
class MockRandomAccessFile extends Mock implements RandomAccessFile {}
class MockCachedArtifact extends Mock implements CachedArtifact {}