diff --git a/packages/flutter_tools/lib/src/ios/ios_workflow.dart b/packages/flutter_tools/lib/src/ios/ios_workflow.dart index bdae6fdc9a7..161b6ea6f8e 100644 --- a/packages/flutter_tools/lib/src/ios/ios_workflow.dart +++ b/packages/flutter_tools/lib/src/ios/ios_workflow.dart @@ -181,6 +181,7 @@ class IOSWorkflow extends DoctorValidator implements Workflow { if (cocoaPodsInstalledAndMeetsVersionCheck) { messages.add(new ValidationMessage('CocoaPods version $cocoaPodsVersionText')); } else { + brewStatus = ValidationType.partial; if (!hasCocoaPods) { messages.add(new ValidationMessage.error( 'CocoaPods not installed. To install:\n' diff --git a/packages/flutter_tools/test/src/ios/ios_workflow_test.dart b/packages/flutter_tools/test/src/ios/ios_workflow_test.dart index f92f2669e4f..9f61486ae76 100644 --- a/packages/flutter_tools/test/src/ios/ios_workflow_test.dart +++ b/packages/flutter_tools/test/src/ios/ios_workflow_test.dart @@ -119,6 +119,30 @@ void main() { expect(result.type, ValidationType.partial); }, overrides: { Xcode: () => xcode }); + testUsingContext('Emits partial status when CocoaPods is not installed', () 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() + ..hasCocoaPods = false; + final ValidationResult result = await workflow.validate(); + expect(result.type, ValidationType.partial); + }, overrides: { Xcode: () => xcode }); + + testUsingContext('Emits partial status when CocoaPods version is too low', () 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() + ..cocoaPodsVersionText = '0.39.0'; + final ValidationResult result = await workflow.validate(); + expect(result.type, ValidationType.partial); + }, overrides: { Xcode: () => xcode }); + testUsingContext('Succeeds when all checks pass', () async { when(xcode.isInstalled).thenReturn(true); when(xcode.xcodeVersionText) @@ -165,4 +189,10 @@ class IOSWorkflowTestTarget extends IOSWorkflow { @override bool get hasIDeviceInstaller => true; + + @override + bool hasCocoaPods = true; + + @override + String cocoaPodsVersionText = '1.2.0'; }