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

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

Issue 988593002: Don't send notifications for disposed contexts. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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 94f5e406aa79cfc4bf3cea20b8f2e9a5974227fd..712cb5ce67b154b0021034917d781b914fd78e15 100644
--- a/pkg/analysis_server/test/analysis_server_test.dart
+++ b/pkg/analysis_server/test/analysis_server_test.dart
@@ -131,34 +131,6 @@ 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_contextsChangedEvent() {
resourceProvider.newFolder('/foo');
@@ -217,6 +189,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();
@@ -293,6 +293,25 @@ import "../foo/foo.dart";
}
}
+ 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');
@@ -405,3 +424,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