[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'