Skip to content

Commit

Permalink
Do not show diagnostic warning for disconnected iOS devices (#105971)
Browse files Browse the repository at this point in the history
  • Loading branch information
jmagman authored Jun 18, 2022
1 parent a4f817c commit aba0c4e
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
13 changes: 12 additions & 1 deletion packages/flutter_tools/lib/src/macos/xcdevice.dart
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,10 @@ class XCDevice {
return error is Map<String, Object?> ? error : null;
}

static int? _errorCode(Map<String, Object?> errorProperties) {
static int? _errorCode(Map<String, Object?>? errorProperties) {
if (errorProperties == null) {
return null;
}
final Object? code = errorProperties['code'];
return code is int ? code : null;
}
Expand Down Expand Up @@ -521,6 +524,14 @@ class XCDevice {
final Map<String, Object?>? errorProperties = _errorProperties(deviceProperties);
final String? errorMessage = _parseErrorMessage(errorProperties);
if (errorMessage != null) {
final int? code = _errorCode(errorProperties);
// Error -13: iPhone is not connected. Xcode will continue when iPhone is connected.
// This error is confusing since the device is not connected and maybe has not been connected
// for a long time. Avoid showing it.
if (code == -13 && errorMessage.contains('not connected')) {
continue;
}

diagnostics.add(errorMessage);
}
}
Expand Down
31 changes: 31 additions & 0 deletions packages/flutter_tools/test/general.shard/macos/xcode_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -788,6 +788,35 @@ void main() {
"recoverySuggestion" : "Xcode will continue when iPhone is finished.",
"domain" : "com.apple.platform.iphoneos"
}
},
{
"modelCode" : "iPad8,5",
"simulator" : false,
"modelName" : "iPad Pro (12.9-inch) (3rd generation)",
"error" : {
"code" : -13,
"failureReason" : "",
"underlyingErrors" : [
{
"code" : 4,
"failureReason" : "",
"description" : "iPad is locked.",
"recoverySuggestion" : "To use iPad with Xcode, unlock it.",
"domain" : "DVTDeviceIneligibilityErrorDomain"
}
],
"description" : "iPad is not connected",
"recoverySuggestion" : "Xcode will continue when iPad is connected.",
"domain" : "com.apple.platform.iphoneos"
},
"operatingSystemVersion" : "15.6 (19G5027e)",
"identifier" : "00008027-0019253601068123",
"platform" : "com.apple.platform.iphoneos",
"architecture" : "arm64e",
"interface" : "usb",
"available" : false,
"name" : "iPad",
"modelUTI" : "com.apple.ipad-pro-12point9-1"
}
]
''';
Expand All @@ -799,10 +828,12 @@ void main() {

final List<String> errors = await xcdevice.getDiagnostics();
expect(errors, hasLength(4));

expect(errors[0], 'Error: iPhone is not paired with your computer. To use iPhone with Xcode, unlock it and choose to trust this computer when prompted. (code -9)');
expect(errors[1], 'Error: iPhone is not paired with your computer.');
expect(errors[2], 'Error: Xcode pairing error. (code -13)');
expect(errors[3], 'Error: iPhone is busy: Preparing debugger support for iPhone. Xcode will continue when iPhone is finished. (code -10)');
expect(errors, isNot(contains('Xcode will continue')));
expect(fakeProcessManager.hasRemainingExpectations, isFalse);
}, overrides: <Type, Generator>{
Platform: () => macPlatform,
Expand Down

0 comments on commit aba0c4e

Please sign in to comment.