Clarify libimobiledevice installation status message (#12303)
Differentiate between 'not installed' and 'not working' and emit a more targeted message.
This commit is contained in:
parent
1a3097025d
commit
283f27d422
@ -125,10 +125,17 @@ class IOSWorkflow extends DoctorValidator implements Workflow {
|
||||
if (hasHomebrew) {
|
||||
brewStatus = ValidationType.installed;
|
||||
|
||||
if (!await iMobileDevice.isWorking) {
|
||||
if (!iMobileDevice.isInstalled) {
|
||||
brewStatus = ValidationType.partial;
|
||||
messages.add(new ValidationMessage.error(
|
||||
'libimobiledevice and ideviceinstaller are not installed or require updating. To update, run:\n'
|
||||
'libimobiledevice and ideviceinstaller are not installed. To install, run:\n'
|
||||
' brew install --HEAD libimobiledevice\n'
|
||||
' brew install ideviceinstaller'
|
||||
));
|
||||
} else if (!await iMobileDevice.isWorking) {
|
||||
brewStatus = ValidationType.partial;
|
||||
messages.add(new ValidationMessage.error(
|
||||
'libimobiledevice and ideviceinstaller may require updating. To update, run:\n'
|
||||
' brew uninstall --ignore-dependencies libimobiledevice\n'
|
||||
' brew install --HEAD libimobiledevice\n'
|
||||
' brew install ideviceinstaller'
|
||||
|
@ -161,6 +161,21 @@ void main() {
|
||||
final IOSWorkflowTestTarget workflow = new IOSWorkflowTestTarget();
|
||||
final ValidationResult result = await workflow.validate();
|
||||
expect(result.type, ValidationType.partial);
|
||||
}, overrides: <Type, Generator>{
|
||||
IMobileDevice: () => new MockIMobileDevice(isInstalled: false, isWorking: false),
|
||||
Xcode: () => xcode,
|
||||
CocoaPods: () => cocoaPods,
|
||||
});
|
||||
|
||||
testUsingContext('Emits partial status when libimobiledevice is installed but not working', () async {
|
||||
when(xcode.isInstalled).thenReturn(true);
|
||||
when(xcode.xcodeVersionText)
|
||||
.thenReturn('Xcode 8.2.1\nBuild version 8C1002\n');
|
||||
when(xcode.isInstalledAndMeetsVersionCheck).thenReturn(true);
|
||||
when(xcode.eulaSigned).thenReturn(true);
|
||||
final IOSWorkflowTestTarget workflow = new IOSWorkflowTestTarget();
|
||||
final ValidationResult result = await workflow.validate();
|
||||
expect(result.type, ValidationType.partial);
|
||||
}, overrides: <Type, Generator>{
|
||||
IMobileDevice: () => new MockIMobileDevice(isWorking: false),
|
||||
Xcode: () => xcode,
|
||||
@ -281,7 +296,13 @@ final ProcessResult exitsHappy = new ProcessResult(
|
||||
);
|
||||
|
||||
class MockIMobileDevice extends IMobileDevice {
|
||||
MockIMobileDevice({bool isWorking: true}) : isWorking = new Future<bool>.value(isWorking);
|
||||
MockIMobileDevice({
|
||||
this.isInstalled: true,
|
||||
bool isWorking: true,
|
||||
}) : isWorking = new Future<bool>.value(isWorking);
|
||||
|
||||
@override
|
||||
final bool isInstalled;
|
||||
|
||||
@override
|
||||
final Future<bool> isWorking;
|
||||
|
Loading…
x
Reference in New Issue
Block a user