Index: pkg/analyzer_cli/test/plugin_manager_test.dart |
diff --git a/pkg/analyzer_cli/test/plugin_manager_test.dart b/pkg/analyzer_cli/test/plugin_manager_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e48d6e24bf7a18729d14e84dc2a9612b877f102c |
--- /dev/null |
+++ b/pkg/analyzer_cli/test/plugin_manager_test.dart |
@@ -0,0 +1,94 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+@TestOn("vm") |
+library analyzer_cli.test.plugin_manager_test; |
+ |
+import 'package:analyzer/src/plugin/plugin_configuration.dart'; |
+import 'package:analyzer_cli/src/plugin/plugin_manager.dart'; |
+import 'package:test/test.dart'; |
+ |
+main() { |
+ group('plugin manager tests', () { |
+ test('combine plugin info', () { |
+ PluginInfo localInfo = new PluginInfo(name: 'my_plugin'); |
+ PluginInfo manifestInfo = new PluginInfo( |
+ className: 'MyPlugin', libraryUri: 'my_plugin/my_plugin.dart'); |
+ |
+ PluginInfo merged = combine(localInfo, manifestInfo); |
+ expect(merged.name, equals('my_plugin')); |
+ expect(merged.className, equals('MyPlugin')); |
+ expect(merged.libraryUri, equals('my_plugin/my_plugin.dart')); |
+ }); |
+ |
+ test('find manifest', () { |
+ const manifestSrc = ''' |
+library_uri: 'my_plugin/my_plugin.dart' |
+'''; |
+ var packageMap = {'my_plugin': new Uri.file('my_plugin')}; |
+ |
+ PluginManager pm = |
+ new PluginManager(packageMap, 'analyzer', (Uri uri) => manifestSrc); |
+ |
+ PluginManifest manifest = pm.findManifest('my_plugin'); |
+ expect(manifest, isNotNull); |
+ expect(manifest.plugin.libraryUri, equals('my_plugin/my_plugin.dart')); |
+ }); |
+ |
+ final plugin1Uri = new Uri.file('my_plugin1'); |
+ final plugin2Uri = new Uri.file('my_plugin2'); |
+ final plugin3Uri = new Uri.file('my_plugin3'); |
+ |
+ const serverPluginManifest = ''' |
+library_uri: 'my_plugin2/my_plugin2.dart' |
+contributes_to: analysis_server |
+'''; |
+ const analyzerPluginManifest = ''' |
+library_uri: 'my_plugin3/my_plugin3.dart' |
+contributes_to: analyzer |
+'''; |
+ |
+ var packageMap = { |
+ 'my_plugin': plugin1Uri, |
+ 'my_plugin2': plugin2Uri, |
+ 'my_plugin3': plugin3Uri |
+ }; |
+ |
+ var manifestReader = (Uri uri) { |
+ if (uri == plugin2Uri) return serverPluginManifest; |
+ if (uri == plugin3Uri) return analyzerPluginManifest; |
+ return null; |
+ }; |
+ |
+ test('get plugin details', () { |
+ PluginManager pm = |
+ new PluginManager(packageMap, 'analysis_server', manifestReader); |
+ |
+ PluginInfo notFound = new PluginInfo(name: 'my_plugin1'); |
+ PluginInfo applicable = new PluginInfo(name: 'my_plugin2'); |
+ PluginInfo notApplicable = new PluginInfo(name: 'my_plugin3'); |
+ |
+ PluginConfig localConfig = |
+ new PluginConfig([notFound, applicable, notApplicable]); |
+ |
+ Iterable<PluginDetails> details = pm.getPluginDetails(localConfig); |
+ expect(details, hasLength(3)); |
+ |
+ List<PluginDetails> plugins = sortByName(details); |
+ |
+ expect(plugins[0].plugin.name, equals('my_plugin1')); |
+ expect(plugins[0].status, equals(PluginStatus.NotFound)); |
+ expect(plugins[1].plugin.name, equals('my_plugin2')); |
+ expect( |
+ plugins[1].plugin.libraryUri, equals('my_plugin2/my_plugin2.dart')); |
+ expect(plugins[1].status, equals(PluginStatus.Applicable)); |
+ expect(plugins[2].plugin.name, equals('my_plugin3')); |
+ expect(plugins[2].status, equals(PluginStatus.NotApplicable)); |
+ }); |
+ }); |
+} |
+ |
+List<PluginDetails> sortByName(Iterable<PluginDetails> details) => |
+ details.toList() |
+ ..sort((p1, p2) => p1.plugin.name.compareTo(p2.plugin.name)); |