Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Unified Diff: pkg/analysis_server/test/analysis_server_test.dart

Issue 1008443002: Cherry-pick r44373, r44378, and r44275. (Closed) Base URL: https://dart.googlecode.com/svn/trunk/dart
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698