Validate empty pubspec plugin section (#51503)
diff --git a/packages/flutter_tools/lib/src/plugins.dart b/packages/flutter_tools/lib/src/plugins.dart
index 49be163..33ce7c5 100644
--- a/packages/flutter_tools/lib/src/plugins.dart
+++ b/packages/flutter_tools/lib/src/plugins.dart
@@ -177,6 +177,9 @@
}
static List<String> validatePluginYaml(YamlMap yaml) {
+ if (yaml == null) {
+ return <String>['Invalid "plugin" specification.'];
+ }
final bool usesOldPluginFormat = const <String>{
'androidPackage',
diff --git a/packages/flutter_tools/test/general.shard/plugin_parsing_test.dart b/packages/flutter_tools/test/general.shard/plugin_parsing_test.dart
index 73b225a..3753fc4 100644
--- a/packages/flutter_tools/test/general.shard/plugin_parsing_test.dart
+++ b/packages/flutter_tools/test/general.shard/plugin_parsing_test.dart
@@ -158,6 +158,16 @@
expect(plugin.platforms, <String, PluginPlatform> {});
});
+ test('error on empty plugin', () {
+ const String pluginYamlRaw = '';
+
+ final YamlMap pluginYaml = loadYaml(pluginYamlRaw) as YamlMap;
+ expect(
+ () => Plugin.fromYaml(_kTestPluginName, _kTestPluginPath, pluginYaml, const <String>[]),
+ throwsToolExit(message: 'Invalid "plugin" specification.'),
+ );
+ });
+
test('error on empty platforms', () {
const String pluginYamlRaw = 'platforms:\n';