[flutter_tools] Add violating plugin name to validation errors (#46601)
diff --git a/AUTHORS b/AUTHORS index 83d76c7..e0972f1 100644 --- a/AUTHORS +++ b/AUTHORS
@@ -48,3 +48,4 @@ Robin Jespersen <info@unitedpartners.de> Jefferson Quesado <jeff.quesado@gmail.com> Mark Diener <rpzrpzrpz@gmail.com> +Alek Åström <alek.astrom@gmail.com>
diff --git a/packages/flutter_tools/lib/src/plugins.dart b/packages/flutter_tools/lib/src/plugins.dart index 162b1c4..f4289a7 100644 --- a/packages/flutter_tools/lib/src/plugins.dart +++ b/packages/flutter_tools/lib/src/plugins.dart
@@ -74,7 +74,7 @@ ) { final List<String> errors = validatePluginYaml(pluginYaml); if (errors.isNotEmpty) { - throwToolExit('Invalid plugin specification.\n${errors.join('\n')}'); + throwToolExit('Invalid plugin specification $name.\n${errors.join('\n')}'); } if (pluginYaml != null && pluginYaml['platforms'] != null) { return Plugin._fromMultiPlatformYaml(name, path, pluginYaml, dependencies); @@ -89,11 +89,11 @@ List<String> dependencies, ) { assert (pluginYaml != null && pluginYaml['platforms'] != null, - 'Invalid multi-platform plugin specification.'); + 'Invalid multi-platform plugin specification $name.'); final YamlMap platformsYaml = pluginYaml['platforms'] as YamlMap; assert (_validateMultiPlatformYaml(platformsYaml).isEmpty, - 'Invalid multi-platform plugin specification.'); + 'Invalid multi-platform plugin specification $name.'); final Map<String, PluginPlatform> platforms = <String, PluginPlatform>{};
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 49942e6..540d029 100644 --- a/packages/flutter_tools/test/general.shard/plugin_parsing_test.dart +++ b/packages/flutter_tools/test/general.shard/plugin_parsing_test.dart
@@ -122,6 +122,19 @@ expect(windowsPlugin.pluginClass, 'WinSamplePlugin'); }); + test('Legacy Format and Multi-Platform Format together is not allowed and error message contains plugin name', () { + const String pluginYamlRaw = 'androidPackage: com.flutter.dev\n' + 'platforms:\n' + ' android:\n' + ' package: com.flutter.dev\n'; + + final YamlMap pluginYaml = loadYaml(pluginYamlRaw) as YamlMap; + expect( + () => Plugin.fromYaml(_kTestPluginName, _kTestPluginPath, pluginYaml, const <String>[]), + throwsToolExit(message: _kTestPluginName), + ); + }); + test('A default_package field is allowed', () { const String pluginYamlRaw = 'platforms:\n'