Unverified Commit f767f860 authored by Jesús S Guerrero's avatar Jesús S Guerrero Committed by GitHub

check if directory exists before listing content (#119748)

parent 322d10e1
...@@ -1242,6 +1242,10 @@ class ArtifactUpdater { ...@@ -1242,6 +1242,10 @@ class ArtifactUpdater {
continue; continue;
} }
for (Directory directory = file.parent; directory.absolute.path != _tempStorage.absolute.path; directory = directory.parent) { for (Directory directory = file.parent; directory.absolute.path != _tempStorage.absolute.path; directory = directory.parent) {
// Handle race condition when the directory is deleted before this step
if (!directory.existsSync()) {
break;
}
if (directory.listSync().isNotEmpty) { if (directory.listSync().isNotEmpty) {
break; break;
} }
......
...@@ -398,6 +398,30 @@ void main() { ...@@ -398,6 +398,30 @@ void main() {
expect(staleFile, isNot(exists)); expect(staleFile, isNot(exists));
}); });
testWithoutContext('Try to remove without a parent', () async {
final FileSystem fileSystem = MemoryFileSystem.test();
final Directory parent = fileSystem.directory('dir');
parent.createSync();
final Directory child = parent.childDirectory('child');
child.createSync();
final Directory tempStorage = parent.childDirectory('temp');
tempStorage.createSync();
final FakeArtifactUpdaterDownload fakeArtifact = FakeArtifactUpdaterDownload(
operatingSystemUtils: FakeOperatingSystemUtils(),
logger: BufferLogger.test(),
fileSystem: fileSystem,
tempStorage: tempStorage,
httpClient: HttpClient(),
platform: FakePlatform(),
allowedBaseUrls: <String>[]
);
final File file = child.childFile('file');
file.createSync();
fakeArtifact.addFiles(<File>[file]);
child.deleteSync(recursive: true);
fakeArtifact.removeDownloadedFiles();
});
testWithoutContext('IosUsbArtifacts verifies executables for libimobiledevice in isUpToDateInner', () async { testWithoutContext('IosUsbArtifacts verifies executables for libimobiledevice in isUpToDateInner', () async {
final FileSystem fileSystem = MemoryFileSystem.test(); final FileSystem fileSystem = MemoryFileSystem.test();
final Cache cache = Cache.test(fileSystem: fileSystem, processManager: FakeProcessManager.any()); final Cache cache = Cache.test(fileSystem: fileSystem, processManager: FakeProcessManager.any());
...@@ -1212,3 +1236,19 @@ class FakeArtifactUpdater extends Fake implements ArtifactUpdater { ...@@ -1212,3 +1236,19 @@ class FakeArtifactUpdater extends Fake implements ArtifactUpdater {
@override @override
void removeDownloadedFiles() { } void removeDownloadedFiles() { }
} }
class FakeArtifactUpdaterDownload extends ArtifactUpdater {
FakeArtifactUpdaterDownload({
required super.operatingSystemUtils,
required super.logger,
required super.fileSystem,
required super.tempStorage,
required super.httpClient,
required super.platform,
required super.allowedBaseUrls
});
void addFiles(List<File> files) {
downloadedFiles.addAll(files);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment