Adding missing break in plugin validation check (#43180)
diff --git a/packages/flutter_tools/lib/src/flutter_manifest.dart b/packages/flutter_tools/lib/src/flutter_manifest.dart index 759734c..a2a8e59 100644 --- a/packages/flutter_tools/lib/src/flutter_manifest.dart +++ b/packages/flutter_tools/lib/src/flutter_manifest.dart
@@ -401,8 +401,9 @@ } break; case 'plugin': - if (kvp.value is! YamlMap) { + if (kvp.value is! YamlMap || kvp.value == null) { errors.add('Expected "${kvp.key}" to be an object, but got ${kvp.value} (${kvp.value.runtimeType}).'); + break; } final List<String> pluginErrors = Plugin.validatePluginYaml(kvp.value); errors.addAll(pluginErrors);
diff --git a/packages/flutter_tools/test/general.shard/flutter_manifest_test.dart b/packages/flutter_tools/test/general.shard/flutter_manifest_test.dart index cfdc70f..2447929 100644 --- a/packages/flutter_tools/test/general.shard/flutter_manifest_test.dart +++ b/packages/flutter_tools/test/general.shard/flutter_manifest_test.dart
@@ -400,6 +400,18 @@ expect(flutterManifest.androidPackage, 'com.example'); }); + testUsingContext('handles an invalid plugin declaration', () async { + final BufferLogger bufferLogger = context.get<Logger>(); + const String manifest = ''' +name: test +flutter: + plugin: +'''; + final FlutterManifest flutterManifest = FlutterManifest.createFromString(manifest); + expect(flutterManifest, null); + expect(bufferLogger.errorText, contains('Expected "plugin" to be an object, but got null')); + }); + Future<void> checkManifestVersion({ String manifest,