diff --git a/packages/flutter_tools/lib/src/base/user_messages.dart b/packages/flutter_tools/lib/src/base/user_messages.dart index 26a8278ce7..165120a783 100644 --- a/packages/flutter_tools/lib/src/base/user_messages.dart +++ b/packages/flutter_tools/lib/src/base/user_messages.dart @@ -193,19 +193,19 @@ class UserMessages { String cocoaPodsMissing(String consequence, String installInstructions) => 'CocoaPods not installed.\n' '$consequence\n' - 'To install $installInstructions'; + 'For installation instructions, $installInstructions'; String cocoaPodsUnknownVersion(String consequence, String upgradeInstructions) => 'Unknown CocoaPods version installed.\n' '$consequence\n' - 'To upgrade $upgradeInstructions'; + 'To update CocoaPods, $upgradeInstructions'; String cocoaPodsOutdated(String currentVersion, String recVersion, String consequence, String upgradeInstructions) => 'CocoaPods $currentVersion out of date ($recVersion is recommended).\n' '$consequence\n' - 'To upgrade $upgradeInstructions'; + 'To update CocoaPods, $upgradeInstructions'; String cocoaPodsBrokenInstall(String consequence, String reinstallInstructions) => 'CocoaPods installed but not working.\n' '$consequence\n' - 'To re-install $reinstallInstructions'; + 'For re-installation instructions, $reinstallInstructions'; // Messages used in VisualStudioValidator String visualStudioVersion(String name, String version) => '$name version $version'; diff --git a/packages/flutter_tools/lib/src/macos/cocoapods.dart b/packages/flutter_tools/lib/src/macos/cocoapods.dart index 1c4517e498..4098fda34e 100644 --- a/packages/flutter_tools/lib/src/macos/cocoapods.dart +++ b/packages/flutter_tools/lib/src/macos/cocoapods.dart @@ -25,7 +25,7 @@ import '../reporting/reporting.dart'; import '../xcode_project.dart'; const String noCocoaPodsConsequence = ''' - CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side. + CocoaPods is a package manager for iOS or macOS platform code. Without CocoaPods, plugins will not work on iOS or macOS. For more info, see https://flutter.dev/platform-plugins'''; @@ -47,9 +47,9 @@ const String outOfDatePluginsPodfileConsequence = ''' See https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms for details. If you have local Podfile edits you would like to keep, see https://github.com/flutter/flutter/issues/45197 for instructions.'''; -const String cocoaPodsInstallInstructions = 'see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.'; +const String cocoaPodsInstallInstructions = 'see https://guides.cocoapods.org/using/getting-started.html#installation'; -const String cocoaPodsUpdateInstructions = 'see https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods for instructions.'; +const String cocoaPodsUpdateInstructions = 'see https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods'; const String podfileIosMigrationInstructions = ''' rm ios/Podfile'''; @@ -200,7 +200,7 @@ class CocoaPods { _logger.printWarning( 'Warning: CocoaPods not installed. Skipping pod install.\n' '$noCocoaPodsConsequence\n' - 'To install $cocoaPodsInstallInstructions\n', + 'For installation instructions, $cocoaPodsInstallInstructions\n', emphasis: true, ); return false; @@ -208,7 +208,7 @@ class CocoaPods { _logger.printWarning( 'Warning: CocoaPods is installed but broken. Skipping pod install.\n' '$brokenCocoaPodsConsequence\n' - 'To re-install $cocoaPodsInstallInstructions\n', + 'For re-installation instructions, $cocoaPodsInstallInstructions\n', emphasis: true, ); return false; @@ -216,14 +216,14 @@ class CocoaPods { _logger.printWarning( 'Warning: Unknown CocoaPods version installed.\n' '$unknownCocoaPodsConsequence\n' - 'To upgrade $cocoaPodsInstallInstructions\n', + 'To update CocoaPods, $cocoaPodsUpdateInstructions\n', emphasis: true, ); case CocoaPodsStatus.belowMinimumVersion: _logger.printWarning( 'Warning: CocoaPods minimum required version $cocoaPodsMinimumVersion or greater not installed. Skipping pod install.\n' '$noCocoaPodsConsequence\n' - 'To upgrade $cocoaPodsInstallInstructions\n', + 'To update CocoaPods, $cocoaPodsUpdateInstructions\n', emphasis: true, ); return false; @@ -231,7 +231,7 @@ class CocoaPods { _logger.printWarning( 'Warning: CocoaPods recommended version $cocoaPodsRecommendedVersion or greater not installed.\n' 'Pods handling may fail on some projects involving plugins.\n' - 'To upgrade $cocoaPodsInstallInstructions\n', + 'To update CocoaPods, $cocoaPodsUpdateInstructions\n', emphasis: true, ); case CocoaPodsStatus.recommended: diff --git a/packages/flutter_tools/lib/src/macos/cocoapods_validator.dart b/packages/flutter_tools/lib/src/macos/cocoapods_validator.dart index 93fccd62e5..49c0dc4bf9 100644 --- a/packages/flutter_tools/lib/src/macos/cocoapods_validator.dart +++ b/packages/flutter_tools/lib/src/macos/cocoapods_validator.dart @@ -43,7 +43,7 @@ class CocoaPodsValidator extends DoctorValidator { case CocoaPodsStatus.unknownVersion: status = ValidationType.partial; messages.add(ValidationMessage.hint( - _userMessages.cocoaPodsUnknownVersion(unknownCocoaPodsConsequence, cocoaPodsInstallInstructions))); + _userMessages.cocoaPodsUnknownVersion(unknownCocoaPodsConsequence, cocoaPodsUpdateInstructions))); case CocoaPodsStatus.belowMinimumVersion: case CocoaPodsStatus.belowRecommendedVersion: status = ValidationType.partial; diff --git a/packages/flutter_tools/test/general.shard/macos/cocoapods_validator_test.dart b/packages/flutter_tools/test/general.shard/macos/cocoapods_validator_test.dart index 670e32d25d..2b72367e3b 100644 --- a/packages/flutter_tools/test/general.shard/macos/cocoapods_validator_test.dart +++ b/packages/flutter_tools/test/general.shard/macos/cocoapods_validator_test.dart @@ -16,18 +16,32 @@ void main() { final CocoaPodsValidator workflow = CocoaPodsValidator(FakeCocoaPods(CocoaPodsStatus.recommended, '1000.0.0'), UserMessages()); final ValidationResult result = await workflow.validate(); expect(result.type, ValidationType.success); + expect(result.messages.length, 1); + final ValidationMessage message = result.messages.first; + expect(message.type, ValidationMessageType.information); + expect(message.message, contains('CocoaPods version 1000.0.0')); }); testWithoutContext('Emits missing status when CocoaPods is not installed', () async { final CocoaPodsValidator workflow = CocoaPodsValidator(FakeCocoaPods(CocoaPodsStatus.notInstalled), UserMessages()); final ValidationResult result = await workflow.validate(); expect(result.type, ValidationType.missing); + expect(result.messages.length, 1); + final ValidationMessage message = result.messages.first; + expect(message.type, ValidationMessageType.error); + expect(message.message, contains('CocoaPods not installed')); + expect(message.message, contains('getting-started.html#installation')); }); testWithoutContext('Emits partial status when CocoaPods is installed with unknown version', () async { final CocoaPodsValidator workflow = CocoaPodsValidator(FakeCocoaPods(CocoaPodsStatus.unknownVersion), UserMessages()); final ValidationResult result = await workflow.validate(); expect(result.type, ValidationType.partial); + expect(result.messages.length, 1); + final ValidationMessage message = result.messages.first; + expect(message.type, ValidationMessageType.hint); + expect(message.message, contains('Unknown CocoaPods version installed')); + expect(message.message, contains('getting-started.html#updating-cocoapods')); }); testWithoutContext('Emits partial status when CocoaPods version is too low', () async {