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"
     },