| 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;
|
| + }
|
| +}
|
|
|