Index: pkg/analysis_server/test/analysis_server_test.dart |
diff --git a/pkg/analysis_server/test/analysis_server_test.dart b/pkg/analysis_server/test/analysis_server_test.dart |
index bd78f9f95bc954e2eddc13369d1450fe59ce8396..6b879fc3508abb5068848d5d30196b6f733857d5 100644 |
--- a/pkg/analysis_server/test/analysis_server_test.dart |
+++ b/pkg/analysis_server/test/analysis_server_test.dart |
@@ -191,6 +191,34 @@ import "../foo/foo.dart"; |
}); |
} |
+ test_getAnalysisContext_nested() { |
+ String dir1Path = '/dir1'; |
+ String dir2Path = dir1Path + '/dir2'; |
+ String filePath = dir2Path + '/file.dart'; |
+ Folder dir1 = resourceProvider.newFolder(dir1Path); |
+ Folder dir2 = resourceProvider.newFolder(dir2Path); |
+ resourceProvider.newFile(filePath, 'library lib;'); |
+ |
+ AnalysisContext context1 = AnalysisEngine.instance.createAnalysisContext(); |
+ AnalysisContext context2 = AnalysisEngine.instance.createAnalysisContext(); |
+ server.folderMap[dir1] = context1; |
+ server.folderMap[dir2] = context2; |
+ |
+ expect(server.getAnalysisContext(filePath), context2); |
+ } |
+ |
+ test_getAnalysisContext_simple() { |
+ String dirPath = '/dir'; |
+ String filePath = dirPath + '/file.dart'; |
+ Folder dir = resourceProvider.newFolder(dirPath); |
+ resourceProvider.newFile(filePath, 'library lib;'); |
+ |
+ AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); |
+ server.folderMap[dir] = context; |
+ |
+ expect(server.getAnalysisContext(filePath), context); |
+ } |
+ |
Future test_getAnalysisContextForSource() { |
// Subscribe to STATUS so we'll know when analysis is done. |
server.serverServices = [ServerService.STATUS].toSet(); |
@@ -283,6 +311,25 @@ import "../foo/foo.dart"; |
expect(source.fullName, filePath); |
} |
+ test_operationsRemovedOnContextDisposal() async { |
+ resourceProvider.newFolder('/foo'); |
+ resourceProvider.newFile('/foo/baz.dart', 'library lib;'); |
+ resourceProvider.newFolder('/bar'); |
+ resourceProvider.newFile('/bar/baz.dart', 'library lib;'); |
+ server.setAnalysisRoots('0', ['/foo', '/bar'], [], {}); |
+ await pumpEventQueue(); |
+ AnalysisContext contextFoo = server.getAnalysisContext('/foo/baz.dart'); |
+ AnalysisContext contextBar = server.getAnalysisContext('/bar/baz.dart'); |
+ _MockServerOperation operationFoo = new _MockServerOperation(contextFoo); |
+ _MockServerOperation operationBar = new _MockServerOperation(contextBar); |
+ server.scheduleOperation(operationFoo); |
+ server.scheduleOperation(operationBar); |
+ server.setAnalysisRoots('1', ['/foo'], [], {}); |
+ await pumpEventQueue(); |
+ expect(operationFoo.isComplete, isTrue); |
+ expect(operationBar.isComplete, isFalse); |
+ } |
+ |
Future test_prioritySourcesChangedEvent() { |
resourceProvider.newFolder('/foo'); |
@@ -403,3 +450,22 @@ class EchoHandler implements RequestHandler { |
return null; |
} |
} |
+ |
+/** |
+ * A [ServerOperation] that does nothing but keep track of whether or not it |
+ * has been performed. |
+ */ |
+class _MockServerOperation implements ServerOperation { |
+ final AnalysisContext context; |
+ bool isComplete = false; |
+ |
+ _MockServerOperation(this.context); |
+ |
+ @override |
+ ServerOperationPriority get priority => ServerOperationPriority.ANALYSIS; |
+ |
+ @override |
+ void perform(AnalysisServer server) { |
+ isComplete = true; |
+ } |
+} |