make pattern more general (#2421)
diff --git a/device_doctor/lib/src/ios_debug_symbol_doctor.dart b/device_doctor/lib/src/ios_debug_symbol_doctor.dart
index cc0e041..f495dda 100644
--- a/device_doctor/lib/src/ios_debug_symbol_doctor.dart
+++ b/device_doctor/lib/src/ios_debug_symbol_doctor.dart
@@ -160,7 +160,7 @@
required this.name,
});
- static const String _debugSymbolDescriptionPattern = 'iPhone is busy: Fetching debug symbols for iPhone';
+ static const String _debugSymbolDescriptionPattern = r' is busy: Fetching debug symbols for ';
/// Parse subset of JSON from `parseJson` associated with a particular XCDevice.
factory XCDevice.fromMap(Map<String, Object?> map) {
diff --git a/device_doctor/test/src/ios_debug_symbol_doctor_test.dart b/device_doctor/test/src/ios_debug_symbol_doctor_test.dart
index b4567cb..3dedecc 100644
--- a/device_doctor/test/src/ios_debug_symbol_doctor_test.dart
+++ b/device_doctor/test/src/ios_debug_symbol_doctor_test.dart
@@ -17,19 +17,21 @@
import 'utils.dart';
Future<void> main() async {
- test('XCDevice surfaces "Fetching debug symbols" error messages', () {
- final Iterable<XCDevice> devices = XCDevice.parseJson(_jsonWithErrors);
- final Iterable<XCDevice> erroredDevices = devices.where((XCDevice device) {
- return device.hasError;
+ for (final String deviceName in const <String>['iPhone', 'iPhone 11', "Flutter's iOS Phone"]) {
+ test('XCDevice surfaces "Fetching debug symbols" error messages for "$deviceName"', () {
+ final Iterable<XCDevice> devices = XCDevice.parseJson(_jsonWithErrors(deviceName));
+ final Iterable<XCDevice> erroredDevices = devices.where((XCDevice device) {
+ return device.hasError;
+ });
+ expect(erroredDevices, hasLength(1));
+ final XCDevice erroredDevice = erroredDevices.single;
+ expect(erroredDevice.error!['code'], -10);
+ expect(erroredDevice.error!['failureReason'], isEmpty);
+ expect(erroredDevice.error!['description'], '$deviceName is busy: Fetching debug symbols for $deviceName');
+ expect(erroredDevice.error!['recoverySuggestion'], 'Xcode will continue when iPhone is finished.');
+ expect(erroredDevice.error!['domain'], 'com.apple.platform.iphoneos');
});
- expect(erroredDevices, hasLength(1));
- final XCDevice erroredDevice = erroredDevices.single;
- expect(erroredDevice.error!['code'], -10);
- expect(erroredDevice.error!['failureReason'], isEmpty);
- expect(erroredDevice.error!['description'], 'iPhone is busy: Fetching debug symbols for iPhone');
- expect(erroredDevice.error!['recoverySuggestion'], 'Xcode will continue when iPhone is finished.');
- expect(erroredDevice.error!['domain'], 'com.apple.platform.iphoneos');
- });
+ }
test('XCDevice ignores "phone is locked" errors', () {
final Iterable<XCDevice> devices = XCDevice.parseJson(_jsonWithNonFatalErrors);
@@ -154,7 +156,7 @@
}
]''';
-const String _jsonWithErrors = '''
+String _jsonWithErrors(String name) => '''
[
{
"modelCode" : "iPhone8,1",
@@ -163,7 +165,7 @@
"error" : {
"code" : -10,
"failureReason" : "",
- "description" : "iPhone is busy: Fetching debug symbols for iPhone",
+ "description" : "$name is busy: Fetching debug symbols for $name",
"recoverySuggestion" : "Xcode will continue when iPhone is finished.",
"domain" : "com.apple.platform.iphoneos"
},