Unverified Commit cb4b4d4a authored by Chris Bracken's avatar Chris Bracken Committed by GitHub

[macOS,iOS] Improve CocoaPods upgrade instructions (#135453)

In our CocoaPods doctor check, if the version of CocoaPods is found to
be too low, rather than emitting a link to the install instructions,
emit a link to the upgrade instructions.

Since this check operates on CocoaPodsStatus, an enum, swtich to using a
case statement and cover all cases.


## Pre-launch Checklist

- [X] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [X] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [X] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [X] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [X] I updated/added relevant documentation (doc comments with `///`).
- [X] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [X] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
parent 79caa837
...@@ -48,6 +48,8 @@ const String outOfDatePluginsPodfileConsequence = ''' ...@@ -48,6 +48,8 @@ const String outOfDatePluginsPodfileConsequence = '''
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 for instructions.';
const String cocoaPodsUpdateInstructions = 'see https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods for instructions.';
const String podfileIosMigrationInstructions = ''' const String podfileIosMigrationInstructions = '''
rm ios/Podfile'''; rm ios/Podfile''';
......
...@@ -29,31 +29,28 @@ class CocoaPodsValidator extends DoctorValidator { ...@@ -29,31 +29,28 @@ class CocoaPodsValidator extends DoctorValidator {
.evaluateCocoaPodsInstallation; .evaluateCocoaPodsInstallation;
ValidationType status = ValidationType.success; ValidationType status = ValidationType.success;
if (cocoaPodsStatus == CocoaPodsStatus.recommended) { switch (cocoaPodsStatus) {
messages.add(ValidationMessage(_userMessages.cocoaPodsVersion((await _cocoaPods.cocoaPodsVersionText).toString()))); case CocoaPodsStatus.recommended:
} else { messages.add(ValidationMessage(_userMessages.cocoaPodsVersion((await _cocoaPods.cocoaPodsVersionText).toString())));
if (cocoaPodsStatus == CocoaPodsStatus.notInstalled) { case CocoaPodsStatus.notInstalled:
status = ValidationType.missing; status = ValidationType.missing;
messages.add(ValidationMessage.error( messages.add(ValidationMessage.error(
_userMessages.cocoaPodsMissing(noCocoaPodsConsequence, cocoaPodsInstallInstructions))); _userMessages.cocoaPodsMissing(noCocoaPodsConsequence, cocoaPodsInstallInstructions)));
case CocoaPodsStatus.brokenInstall:
} else if (cocoaPodsStatus == CocoaPodsStatus.brokenInstall) {
status = ValidationType.missing; status = ValidationType.missing;
messages.add(ValidationMessage.error( messages.add(ValidationMessage.error(
_userMessages.cocoaPodsBrokenInstall(brokenCocoaPodsConsequence, cocoaPodsInstallInstructions))); _userMessages.cocoaPodsBrokenInstall(brokenCocoaPodsConsequence, cocoaPodsInstallInstructions)));
case CocoaPodsStatus.unknownVersion:
} else if (cocoaPodsStatus == CocoaPodsStatus.unknownVersion) {
status = ValidationType.partial; status = ValidationType.partial;
messages.add(ValidationMessage.hint( messages.add(ValidationMessage.hint(
_userMessages.cocoaPodsUnknownVersion(unknownCocoaPodsConsequence, cocoaPodsInstallInstructions))); _userMessages.cocoaPodsUnknownVersion(unknownCocoaPodsConsequence, cocoaPodsInstallInstructions)));
} else { case CocoaPodsStatus.belowMinimumVersion:
case CocoaPodsStatus.belowRecommendedVersion:
status = ValidationType.partial; status = ValidationType.partial;
final String currentVersionText = (await _cocoaPods.cocoaPodsVersionText).toString(); final String currentVersionText = (await _cocoaPods.cocoaPodsVersionText).toString();
messages.add(ValidationMessage.hint( messages.add(ValidationMessage.hint(
_userMessages.cocoaPodsOutdated(currentVersionText, cocoaPodsRecommendedVersion.toString(), noCocoaPodsConsequence, cocoaPodsInstallInstructions))); _userMessages.cocoaPodsOutdated(currentVersionText, cocoaPodsRecommendedVersion.toString(), noCocoaPodsConsequence, cocoaPodsUpdateInstructions)));
}
} }
return ValidationResult(status, messages); return ValidationResult(status, messages);
} }
} }
...@@ -41,6 +41,7 @@ void main() { ...@@ -41,6 +41,7 @@ void main() {
expect(message.type, ValidationMessageType.hint); expect(message.type, ValidationMessageType.hint);
expect(message.message, contains('CocoaPods $currentVersion out of date')); expect(message.message, contains('CocoaPods $currentVersion out of date'));
expect(message.message, contains('(1.11.0 is recommended)')); expect(message.message, contains('(1.11.0 is recommended)'));
expect(message.message, contains('getting-started.html#updating-cocoapods'));
}); });
}); });
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment