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

This commit is contained in:
huangchaoyang 2020-07-23 09:24:03 +08:00 committed by GitHub
parent d41b1fbb50
commit 9da74f66ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 0 deletions

View File

@ -213,6 +213,14 @@ class Plugin {
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 (yaml['platforms'] != null && yaml['platforms'] is! YamlMap) {
const String errorMessage = 'flutter.plugin.platforms should be a map with the platform name as the key';
@ -264,6 +272,7 @@ class Plugin {
static List<String> _validateLegacyYaml(YamlMap yaml) {
final List<String> errors = <String>[];
if (yaml['androidPackage'] != null && yaml['androidPackage'] is! String) {
errors.add('The "androidPackage" must either be null or a string.');
}

View File

@ -1017,6 +1017,28 @@ flutter:
expect(logger.errorText,
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({