Chromium Code Reviews| Index: pkg/analyzer/test/src/plugin/plugin_config_test.dart |
| diff --git a/pkg/analyzer/test/src/plugin/plugin_config_test.dart b/pkg/analyzer/test/src/plugin/plugin_config_test.dart |
| index e3cc9603fc82d2d0043767917fd7d0fd4c56e6df..cc06b9691654721572ea005573e4970d2d26726d 100644 |
| --- a/pkg/analyzer/test/src/plugin/plugin_config_test.dart |
| +++ b/pkg/analyzer/test/src/plugin/plugin_config_test.dart |
| @@ -25,7 +25,7 @@ analyzer: |
| path: '/u/disk/src/' |
| '''; |
| var config = parseConfig(optionsSrc); |
| - var plugins = pluginsSortedByName(config); |
| + var plugins = pluginsSortedByName(config.plugins); |
| expect(plugins, hasLength(3)); |
| expect(plugins[0].name, equals('my_plugin1')); |
| expect(plugins[0].version, equals('^0.1.0')); |
| @@ -37,6 +37,7 @@ analyzer: |
| expect(plugins[2].libraryUri, equals('myplugin/myplugin.dart')); |
| expect(plugins[2].className, equals('MyPlugin')); |
| }); |
| + |
| test('plugin map (empty)', () { |
| const optionsSrc = ''' |
| analyzer: |
| @@ -47,8 +48,38 @@ analyzer: |
| // Commented out plugins shouldn't cause a parse failure. |
| expect(config.plugins, hasLength(0)); |
| }); |
| + |
| + test('plugin manifest', () { |
| + const manifestSrc = ''' |
| +class_name: AnalyzerPlugin |
| +library_uri: myplugin/analyzer_plugin.dart |
|
Brian Wilkerson
2015/09/24 21:40:00
I suspect that in most cases the URI will be a "pa
pquitslund
2015/09/24 21:52:44
Will do. I want to add more validation for sure a
|
| +contributes_to: analyzer |
| +'''; |
| + var manifest = parsePluginManifestString(manifestSrc); |
| + var plugin = manifest.plugin; |
| + expect(plugin.libraryUri, equals('myplugin/analyzer_plugin.dart')); |
| + expect(plugin.className, equals('AnalyzerPlugin')); |
| + expect(manifest.contributesTo, unorderedEquals(['analyzer'])); |
| + }); |
| + |
| + test('plugin manifest (contributes_to list)', () { |
| + const manifestSrc = ''' |
| +class_name: AnalyzerPlugin |
| +library_uri: myplugin/analyzer_plugin.dart |
| +contributes_to: |
| + - analyzer |
| + - analysis_server |
| +'''; |
| + var manifest = parsePluginManifestString(manifestSrc); |
| + var plugin = manifest.plugin; |
| + expect(plugin.libraryUri, equals('myplugin/analyzer_plugin.dart')); |
| + expect(plugin.className, equals('AnalyzerPlugin')); |
| + expect(manifest.contributesTo, |
| + unorderedEquals(['analyzer', 'analysis_server'])); |
| + }); |
| + |
| group('errors', () { |
| - test('bad format', () { |
| + test('bad config format', () { |
| const optionsSrc = ''' |
| analyzer: |
| plugins: |
| @@ -62,7 +93,23 @@ analyzer: |
| expect( |
| e.message, |
| equals( |
| - 'Unrecognized plugin config format (expected `YamlMap`, got `YamlList`)')); |
| + 'Unrecognized plugin config format, expected `YamlMap`, got `YamlList`')); |
| + expect(e.yamlNode, new isInstanceOf<YamlList>()); |
| + } |
| + }); |
| + test('bad manifest format', () { |
| + const manifestSource = ''' |
| +library_uri: |
| + - should be a scalar uri |
| +'''; |
| + try { |
| + parsePluginManifestString(manifestSource); |
| + fail('expected PluginConfigFormatException'); |
| + } on PluginConfigFormatException catch (e) { |
| + expect( |
| + e.message, |
| + equals( |
| + 'Unable to parse pugin manifest, expected `String`, got `YamlList`')); |
| expect(e.yamlNode, new isInstanceOf<YamlList>()); |
| } |
| }); |
| @@ -76,5 +123,5 @@ PluginConfig parseConfig(String optionsSrc) { |
| return new PluginConfig.fromOptions(options); |
| } |
| -List<PluginInfo> pluginsSortedByName(PluginConfig config) => |
| - config.plugins.toList()..sort((p1, p2) => p1.name.compareTo(p2.name)); |
| +List<PluginInfo> pluginsSortedByName(Iterable<PluginInfo> plugins) => |
| + plugins.toList()..sort((p1, p2) => p1.name.compareTo(p2.name)); |