Chromium Code Reviews| Index: pkg/analyzer_plugin/test/plugin/plugin_test.dart |
| diff --git a/pkg/analyzer_plugin/test/plugin/plugin_test.dart b/pkg/analyzer_plugin/test/plugin/plugin_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7984a2d74aca5c90fff2cd6ac3ad45259045158d |
| --- /dev/null |
| +++ b/pkg/analyzer_plugin/test/plugin/plugin_test.dart |
| @@ -0,0 +1,278 @@ |
| +// Copyright (c) 2017, 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. |
| + |
| +import 'dart:async'; |
| + |
| +import 'package:analyzer/file_system/file_system.dart'; |
| +import 'package:analyzer/file_system/memory_file_system.dart'; |
| +import 'package:analyzer/src/dart/analysis/driver.dart'; |
| +import 'package:analyzer_plugin/plugin/plugin.dart'; |
| +import 'package:analyzer_plugin/protocol/protocol_generated.dart'; |
| +import 'package:path/src/context.dart'; |
| +import 'package:test/test.dart'; |
| +import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| + |
| +void main() { |
| + defineReflectiveTests(ServerPluginTest); |
| +} |
| + |
| +class MockAnalysisDriver extends AnalysisDriverGeneric { |
| + @override |
| + bool get hasFilesToAnalyze => false; |
| + |
| + @override |
| + set priorityFiles(List<String> priorityPaths) {} |
| + |
| + @override |
| + AnalysisDriverPriority get workPriority => AnalysisDriverPriority.nothing; |
| + |
| + @override |
| + void dispose() {} |
| + |
| + @override |
| + Future<Null> performWork() => new Future.value(null); |
| +} |
| + |
| +@reflectiveTest |
| +class ServerPluginTest { |
| + MemoryResourceProvider resourceProvider = new MemoryResourceProvider(); |
| + |
| + TestServerPlugin plugin; |
| + |
| + String packagePath1; |
| + String filePath1; |
| + ContextRoot contextRoot1; |
| + |
| + String packagePath2; |
| + String filePath2; |
| + ContextRoot contextRoot2; |
| + |
| + void setUp() { |
| + Context pathContext = resourceProvider.pathContext; |
| + |
| + packagePath1 = resourceProvider.convertPath('/package1'); |
| + String lib1Path = pathContext.join(packagePath1, 'lib'); |
| + filePath1 = pathContext.join(lib1Path, 'test.dart'); |
| + resourceProvider.newFolder(packagePath1); |
| + resourceProvider.newFolder(lib1Path); |
| + resourceProvider.newFile(filePath1, ''); |
|
scheglov
2017/05/03 19:37:02
newFile() creates all its parent folders.
Brian Wilkerson
2017/05/03 19:48:12
Done
|
| + contextRoot1 = new ContextRoot(packagePath1, <String>[]); |
| + |
| + packagePath2 = resourceProvider.convertPath('/package2'); |
| + String lib2Path = pathContext.join(packagePath2, 'lib'); |
| + filePath2 = pathContext.join(lib2Path, 'test.dart'); |
| + resourceProvider.newFolder(packagePath1); |
| + resourceProvider.newFolder(lib2Path); |
| + resourceProvider.newFile(filePath2, ''); |
| + contextRoot2 = new ContextRoot(packagePath2, <String>[]); |
| + |
| + plugin = new TestServerPlugin(resourceProvider); |
| + } |
| + |
| + void test_contextRootContaining_insideRoot() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + |
| + expect(plugin.contextRootContaining(filePath1), isNotNull); |
| + } |
| + |
| + void test_contextRootContaining_noRoots() { |
| + expect(plugin.contextRootContaining(filePath1), isNull); |
| + } |
| + |
| + void test_contextRootContaining_outsideRoot() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + |
| + expect(plugin.contextRootContaining(filePath2), isNull); |
| + } |
| + |
| + @failingTest |
| + void test_handleAnalysisHandleWatchEvents() { |
| + var result = plugin.handleAnalysisHandleWatchEvents( |
| + new AnalysisHandleWatchEventsParams([])); |
| + expect(result, isNotNull); |
| + } |
| + |
| + @failingTest |
| + void test_handleAnalysisReanalyze_all() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + var result = plugin.handleAnalysisReanalyze(new AnalysisReanalyzeParams()); |
| + expect(result, isNotNull); |
| + } |
| + |
| + @failingTest |
| + void test_handleAnalysisReanalyze_subset() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot2])); |
| + var result = plugin.handleAnalysisReanalyze( |
| + new AnalysisReanalyzeParams(roots: [packagePath2])); |
| + expect(result, isNotNull); |
| + } |
| + |
| + @failingTest |
| + void test_handleAnalysisSetContextBuilderOptions() { |
| + var result = plugin.handleAnalysisSetContextBuilderOptions( |
| + new AnalysisSetContextBuilderOptionsParams( |
| + new ContextBuilderOptions())); |
| + expect(result, isNotNull); |
| + } |
| + |
| + void test_handleAnalysisSetContextRoots() { |
| + var result = plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + expect(result, isNotNull); |
| + expect(plugin.driverMap[contextRoot1], isNotNull); |
| + } |
| + |
| + void test_handleAnalysisSetPriorityFiles() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + |
| + var result = plugin.handleAnalysisSetPriorityFiles( |
| + new AnalysisSetPriorityFilesParams([filePath1])); |
| + expect(result, isNotNull); |
| + } |
| + |
| + void test_handleAnalysisSetSubscriptions() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + expect(plugin.subscriptionManager.servicesForFile(filePath1), isEmpty); |
| + |
| + AnalysisSetSubscriptionsResult result = plugin |
| + .handleAnalysisSetSubscriptions(new AnalysisSetSubscriptionsParams({ |
| + AnalysisService.OUTLINE: [filePath1] |
| + })); |
| + expect(result, isNotNull); |
| + expect(plugin.subscriptionManager.servicesForFile(filePath1), |
| + [AnalysisService.OUTLINE]); |
| + } |
| + |
| + void test_handleAnalysisUpdateContent() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + var addResult = plugin.handleAnalysisUpdateContent( |
| + new AnalysisUpdateContentParams( |
| + {filePath1: new AddContentOverlay('class C {}')})); |
| + expect(addResult, isNotNull); |
| + var changeResult = |
| + plugin.handleAnalysisUpdateContent(new AnalysisUpdateContentParams({ |
| + filePath1: |
| + new ChangeContentOverlay([new SourceEdit(7, 0, ' extends Object')]) |
| + })); |
| + expect(changeResult, isNotNull); |
| + var removeResult = plugin.handleAnalysisUpdateContent( |
| + new AnalysisUpdateContentParams( |
| + {filePath1: new RemoveContentOverlay()})); |
| + expect(removeResult, isNotNull); |
| + } |
| + |
| + void test_handleCompletionGetSuggestions() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + |
| + CompletionGetSuggestionsResult result = |
| + plugin.handleCompletionGetSuggestions( |
| + new CompletionGetSuggestionsParams(filePath1, 12)); |
| + expect(result, isNotNull); |
| + } |
| + |
| + void test_handleEditGetAssists() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + |
| + EditGetAssistsResult result = |
| + plugin.handleEditGetAssists(new EditGetAssistsParams(filePath1, 10, 0)); |
| + expect(result, isNotNull); |
| + } |
| + |
| + void test_handleEditGetAvailableRefactorings() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + |
| + EditGetAvailableRefactoringsResult result = |
| + plugin.handleEditGetAvailableRefactorings( |
| + new EditGetAvailableRefactoringsParams(filePath1, 10, 0)); |
| + expect(result, isNotNull); |
| + } |
| + |
| + void test_handleEditGetFixes() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + |
| + EditGetFixesResult result = |
| + plugin.handleEditGetFixes(new EditGetFixesParams(filePath1, 13)); |
| + expect(result, isNotNull); |
| + } |
| + |
| + @failingTest |
| + void test_handleEditGetRefactoring() { |
| + plugin.handleAnalysisSetContextRoots( |
| + new AnalysisSetContextRootsParams([contextRoot1])); |
| + |
| + EditGetRefactoringResult result = plugin.handleEditGetRefactoring( |
| + new EditGetRefactoringParams( |
| + RefactoringKind.RENAME, filePath1, 7, 0, false)); |
| + expect(result, isNotNull); |
| + } |
| + |
| + void test_handlePluginShutdown() { |
| + var result = plugin.handlePluginShutdown(new PluginShutdownParams()); |
| + expect(result, isNotNull); |
| + } |
| + |
| + void test_handlePluginVersionCheck() { |
| + PluginVersionCheckResult result = plugin.handlePluginVersionCheck( |
| + new PluginVersionCheckParams('path', '0.1.0')); |
| + expect(result, isNotNull); |
| + expect(result.interestingFiles, ['*.dart']); |
| + expect(result.isCompatible, isTrue); |
| + expect(result.name, 'Test Plugin'); |
| + expect(result.version, '0.1.0'); |
| + } |
| + |
| + @failingTest |
| + void test_isCompatibleWith() { |
| + fail('Not yet implemented.'); |
| + } |
| + |
| + @failingTest |
| + void test_onDone() { |
| + fail('Not yet implemented.'); |
| + } |
| + |
| + @failingTest |
| + void test_onError() { |
| + fail('Not yet implemented.'); |
| + } |
| + |
| + @failingTest |
| + void test_start() { |
| + fail('Not yet implemented.'); |
| + } |
| +} |
| + |
| +/** |
| + * A concrete implementation of a server plugin that is suitable for testing. |
| + */ |
| +class TestServerPlugin extends ServerPlugin { |
| + TestServerPlugin(ResourceProvider resourceProvider) : super(resourceProvider); |
| + |
| + @override |
| + List<String> get fileGlobsToAnalyze => <String>['*.dart']; |
| + |
| + @override |
| + String get name => 'Test Plugin'; |
| + |
| + @override |
| + String get version => '0.1.0'; |
| + |
| + @override |
| + AnalysisDriverGeneric createAnalysisDriver(ContextRoot contextRoot) { |
| + return new MockAnalysisDriver(); |
| + } |
| +} |