Unverified Commit 70e70ebb authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] Catch all exception subtypes when unzipping a file (#70967)

parent 2f567c39
......@@ -4,7 +4,6 @@
import 'dart:async';
import 'package:archive/archive.dart';
import 'package:crypto/crypto.dart';
import 'package:file/memory.dart';
import 'package:meta/meta.dart';
......@@ -15,7 +14,7 @@ import 'android/gradle_utils.dart';
import 'base/common.dart';
import 'base/error_handling_io.dart';
import 'base/file_system.dart';
import 'base/io.dart' show HttpClient, HttpClientRequest, HttpClientResponse, HttpHeaders, HttpStatus, ProcessException, SocketException;
import 'base/io.dart' show HttpClient, HttpClientRequest, HttpClientResponse, HttpHeaders, HttpStatus, SocketException;
import 'base/logger.dart';
import 'base/net.dart';
import 'base/os.dart' show OperatingSystemUtils;
......@@ -1792,14 +1791,7 @@ class ArtifactUpdater {
try {
extractor(tempFile, location);
} on ProcessException {
retries -= 1;
if (retries == 0) {
rethrow;
}
_deleteIgnoringErrors(tempFile);
continue;
} on ArchiveException {
} on Exception {
retries -= 1;
if (retries == 0) {
rethrow;
......
......@@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:archive/archive.dart';
import 'package:file/memory.dart';
import 'package:file/src/interface/file.dart';
import 'package:file_testing/file_testing.dart';
......@@ -314,7 +313,7 @@ void main() {
'test message',
Uri.parse('http:///test.zip'),
fileSystem.currentDirectory.childDirectory('out'),
), throwsA(isA<ProcessException>()));
), throwsA(isA<Exception>()));
expect(fileSystem.file('te,[/test'), isNot(exists));
expect(fileSystem.file('out/test'), isNot(exists));
});
......@@ -338,7 +337,7 @@ void main() {
'test message',
Uri.parse('http:///test.zip'),
fileSystem.currentDirectory.childDirectory('out'),
), throwsA(isA<ArchiveException>()));
), throwsA(isA<Exception>()));
expect(fileSystem.file('te,[/test'), isNot(exists));
expect(fileSystem.file('out/test'), isNot(exists));
});
......@@ -401,10 +400,7 @@ class MockOperatingSystemUtils extends Mock implements OperatingSystemUtils {
void unzip(File file, Directory targetDirectory) {
if (failures > 0) {
failures -= 1;
if (windows) {
throw ArchiveException('zip');
}
throw const ProcessException('zip', <String>[], 'Failed to unzip');
throw Exception();
}
targetDirectory.childFile(file.fileSystem.path.basenameWithoutExtension(file.path))
.createSync();
......@@ -414,10 +410,7 @@ class MockOperatingSystemUtils extends Mock implements OperatingSystemUtils {
void unpack(File gzippedTarFile, Directory targetDirectory) {
if (failures > 0) {
failures -= 1;
if (windows) {
throw ArchiveException('zip');
}
throw const ProcessException('zip', <String>[], 'Failed to unzip');
throw Exception();
}
targetDirectory.childFile(gzippedTarFile.fileSystem.path.basenameWithoutExtension(gzippedTarFile.path))
.createSync();
......
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