Unverified Commit 9da74f66 authored by huangchaoyang's avatar huangchaoyang Committed by GitHub

Show correct errors when plugins yaml forgot the 'flutter.plugins.pla… (#61338)

parent d41b1fbb
...@@ -213,6 +213,14 @@ class Plugin { ...@@ -213,6 +213,14 @@ class Plugin {
return <String>[errorMessage]; return <String>[errorMessage];
} }
if (!usesOldPluginFormat && !usesNewPluginFormat) {
const String errorMessage =
'Cannot find the `flutter.plugin.platforms` key in the `pubspec.yaml` file. '
'An instruction to format the `pubspec.yaml` can be found here: '
'https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms';
return <String>[errorMessage];
}
if (usesNewPluginFormat) { if (usesNewPluginFormat) {
if (yaml['platforms'] != null && yaml['platforms'] is! YamlMap) { if (yaml['platforms'] != null && yaml['platforms'] is! YamlMap) {
const String errorMessage = 'flutter.plugin.platforms should be a map with the platform name as the key'; const String errorMessage = 'flutter.plugin.platforms should be a map with the platform name as the key';
...@@ -264,6 +272,7 @@ class Plugin { ...@@ -264,6 +272,7 @@ class Plugin {
static List<String> _validateLegacyYaml(YamlMap yaml) { static List<String> _validateLegacyYaml(YamlMap yaml) {
final List<String> errors = <String>[]; final List<String> errors = <String>[];
if (yaml['androidPackage'] != null && yaml['androidPackage'] is! String) { if (yaml['androidPackage'] != null && yaml['androidPackage'] is! String) {
errors.add('The "androidPackage" must either be null or a string.'); errors.add('The "androidPackage" must either be null or a string.');
} }
......
...@@ -1017,6 +1017,28 @@ flutter: ...@@ -1017,6 +1017,28 @@ flutter:
expect(logger.errorText, expect(logger.errorText,
contains('flutter.plugin.platforms should be a map with the platform name as the key')); contains('flutter.plugin.platforms should be a map with the platform name as the key'));
}); });
testWithoutContext('FlutterManifest validates plugin format not support.', () {
const String manifest = '''
name: test
flutter:
plugin:
android:
package: com.example
pluginClass: SomeClass
ios:
pluginClass: SomeClass
''';
final BufferLogger logger = BufferLogger.test();
final FlutterManifest flutterManifest = FlutterManifest.createFromString(
manifest,
logger: logger,
);
expect(flutterManifest, null);
expect(logger.errorText,
contains('Cannot find the `flutter.plugin.platforms` key in the `pubspec.yaml` file. '));
});
} }
Matcher matchesManifest({ Matcher matchesManifest({
......
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