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

Side by Side Diff: pkg/analysis_server/test/domain_analysis_test.dart

Issue 2526473003: Make AnalysisSErver APIs to access unit/node/element asynchronous. (Closed)
Patch Set: Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test.domain.analysis; 5 library test.domain.analysis;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/plugin/protocol/protocol.dart'; 9 import 'package:analysis_server/plugin/protocol/protocol.dart';
10 import 'package:analysis_server/src/analysis_server.dart'; 10 import 'package:analysis_server/src/analysis_server.dart';
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 98
99 group('setAnalysisRoots', () { 99 group('setAnalysisRoots', () {
100 Response testSetAnalysisRoots( 100 Response testSetAnalysisRoots(
101 List<String> included, List<String> excluded) { 101 List<String> included, List<String> excluded) {
102 Request request = new AnalysisSetAnalysisRootsParams(included, excluded) 102 Request request = new AnalysisSetAnalysisRootsParams(included, excluded)
103 .toRequest('0'); 103 .toRequest('0');
104 return handler.handleRequest(request); 104 return handler.handleRequest(request);
105 } 105 }
106 106
107 group('excluded', () { 107 group('excluded', () {
108 test('excluded folder', () { 108 test('excluded folder', () async {
109 String fileA = '/project/aaa/a.dart'; 109 String fileA = '/project/aaa/a.dart';
110 String fileB = '/project/bbb/b.dart'; 110 String fileB = '/project/bbb/b.dart';
111 resourceProvider.newFile(fileA, '// a'); 111 resourceProvider.newFile(fileA, '// a');
112 resourceProvider.newFile(fileB, '// b'); 112 resourceProvider.newFile(fileB, '// b');
113 var response = testSetAnalysisRoots(['/project'], ['/project/bbb']); 113 var response = testSetAnalysisRoots(['/project'], ['/project/bbb']);
114 var serverRef = server; 114 var serverRef = server;
115 expect(response, isResponseSuccess('0')); 115 expect(response, isResponseSuccess('0'));
116 // unit "a" is resolved eventually 116 // unit "a" is resolved eventually
117 // unit "b" is not resolved 117 // unit "b" is not resolved
118 return server.onAnalysisComplete.then((_) { 118 await server.onAnalysisComplete;
119 expect(serverRef.getResolvedCompilationUnit(fileA), isNotNull); 119 expect(await serverRef.getResolvedCompilationUnit(fileA), isNotNull);
120 expect(serverRef.getResolvedCompilationUnit(fileB), isNull); 120 expect(await serverRef.getResolvedCompilationUnit(fileB), isNull);
121 });
122 }); 121 });
123 122
124 test('not absolute', () async { 123 test('not absolute', () async {
125 var response = testSetAnalysisRoots([], ['foo/bar']); 124 var response = testSetAnalysisRoots([], ['foo/bar']);
126 expect( 125 expect(
127 response, 126 response,
128 isResponseFailure( 127 isResponseFailure(
129 '0', RequestErrorCode.INVALID_FILE_PATH_FORMAT)); 128 '0', RequestErrorCode.INVALID_FILE_PATH_FORMAT));
130 }); 129 });
131 130
132 test('not normalized', () async { 131 test('not normalized', () async {
133 var response = testSetAnalysisRoots([], ['/foo/../bar']); 132 var response = testSetAnalysisRoots([], ['/foo/../bar']);
134 expect( 133 expect(
135 response, 134 response,
136 isResponseFailure( 135 isResponseFailure(
137 '0', RequestErrorCode.INVALID_FILE_PATH_FORMAT)); 136 '0', RequestErrorCode.INVALID_FILE_PATH_FORMAT));
138 }); 137 });
139 }); 138 });
140 139
141 group('included', () { 140 group('included', () {
142 test('new folder', () { 141 test('new folder', () async {
143 String file = '/project/bin/test.dart'; 142 String file = '/project/bin/test.dart';
144 resourceProvider.newFile('/project/pubspec.yaml', 'name: project'); 143 resourceProvider.newFile('/project/pubspec.yaml', 'name: project');
145 resourceProvider.newFile(file, 'main() {}'); 144 resourceProvider.newFile(file, 'main() {}');
146 var response = testSetAnalysisRoots(['/project'], []); 145 var response = testSetAnalysisRoots(['/project'], []);
147 var serverRef = server; 146 var serverRef = server;
148 expect(response, isResponseSuccess('0')); 147 expect(response, isResponseSuccess('0'));
149 // verify that unit is resolved eventually 148 // verify that unit is resolved eventually
150 return server.onAnalysisComplete.then((_) { 149 await server.onAnalysisComplete;
151 var unit = serverRef.getResolvedCompilationUnit(file); 150 var unit = await serverRef.getResolvedCompilationUnit(file);
152 expect(unit, isNotNull); 151 expect(unit, isNotNull);
153 });
154 }); 152 });
155 153
156 test('nonexistent folder', () async { 154 test('nonexistent folder', () async {
157 String fileB = '/project_b/b.dart'; 155 String fileB = '/project_b/b.dart';
158 resourceProvider.newFile(fileB, '// b'); 156 resourceProvider.newFile(fileB, '// b');
159 var response = testSetAnalysisRoots(['/project_a', '/project_b'], []); 157 var response = testSetAnalysisRoots(['/project_a', '/project_b'], []);
160 var serverRef = server; 158 var serverRef = server;
161 expect(response, isResponseSuccess('0')); 159 expect(response, isResponseSuccess('0'));
162 // Non-existence of /project_a should not prevent files in /project_b 160 // Non-existence of /project_a should not prevent files in /project_b
163 // from being analyzed. 161 // from being analyzed.
164 await server.onAnalysisComplete; 162 await server.onAnalysisComplete;
165 expect(serverRef.getResolvedCompilationUnit(fileB), isNotNull); 163 var unit = await serverRef.getResolvedCompilationUnit(fileB);
164 expect(unit, isNotNull);
166 }); 165 });
167 166
168 test('not absolute', () async { 167 test('not absolute', () async {
169 var response = testSetAnalysisRoots(['foo/bar'], []); 168 var response = testSetAnalysisRoots(['foo/bar'], []);
170 expect( 169 expect(
171 response, 170 response,
172 isResponseFailure( 171 isResponseFailure(
173 '0', RequestErrorCode.INVALID_FILE_PATH_FORMAT)); 172 '0', RequestErrorCode.INVALID_FILE_PATH_FORMAT));
174 }); 173 });
175 174
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 test_beforeAnalysis() async { 774 test_beforeAnalysis() async {
776 addTestFile('int V = 42;'); 775 addTestFile('int V = 42;');
777 createProject(); 776 createProject();
778 // subscribe 777 // subscribe
779 addAnalysisSubscription(AnalysisService.HIGHLIGHTS, testFile); 778 addAnalysisSubscription(AnalysisService.HIGHLIGHTS, testFile);
780 // wait for analysis 779 // wait for analysis
781 await waitForTasksFinished(); 780 await waitForTasksFinished();
782 expect(filesHighlights[testFile], isNotEmpty); 781 expect(filesHighlights[testFile], isNotEmpty);
783 } 782 }
784 } 783 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698