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

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

Issue 308003009: Add ServerOperation and queue. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Tweaks for review comments Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
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/src/analysis_server.dart'; 9 import 'package:analysis_server/src/analysis_server.dart';
10 import 'package:analysis_server/src/constants.dart'; 10 import 'package:analysis_server/src/constants.dart';
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 resourceProvider.newFolder('/project'); 76 resourceProvider.newFolder('/project');
77 resourceProvider.newFile('/project/pubspec.yaml', 'name: project'); 77 resourceProvider.newFile('/project/pubspec.yaml', 'name: project');
78 resourceProvider.newFile('/project/bin/test.dart', 'main() {}'); 78 resourceProvider.newFile('/project/bin/test.dart', 'main() {}');
79 request.setParameter( 79 request.setParameter(
80 INCLUDED, 80 INCLUDED,
81 ['/project']); 81 ['/project']);
82 var response = handler.handleRequest(request); 82 var response = handler.handleRequest(request);
83 var serverRef = server; 83 var serverRef = server;
84 expect(response, isResponseSuccess('0')); 84 expect(response, isResponseSuccess('0'));
85 // verify that unit is resolved eventually 85 // verify that unit is resolved eventually
86 return waitForServerTasksFinished(server).then((_) { 86 return waitForServerOperationsPerformed(server).then((_) {
87 var unit = serverRef.test_getResolvedCompilationUnit('/project/bin/t est.dart'); 87 var unit = serverRef.test_getResolvedCompilationUnit('/project/bin/t est.dart');
88 expect(unit, isNotNull); 88 expect(unit, isNotNull);
89 }); 89 });
90 }); 90 });
91 }); 91 });
92 }); 92 });
93 93
94 test('setPriorityFiles', () { 94 test('setPriorityFiles', () {
95 var request = new Request('0', METHOD_SET_PRIORITY_FILES); 95 var request = new Request('0', METHOD_SET_PRIORITY_FILES);
96 request.setParameter( 96 request.setParameter(
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 // set subscriptions 210 // set subscriptions
211 Request request = new Request('0', METHOD_SET_ANALYSIS_SUBSCRIPTIONS); 211 Request request = new Request('0', METHOD_SET_ANALYSIS_SUBSCRIPTIONS);
212 request.setParameter(SUBSCRIPTIONS, analysisSubscriptions); 212 request.setParameter(SUBSCRIPTIONS, analysisSubscriptions);
213 handleSuccessfulRequest(request); 213 handleSuccessfulRequest(request);
214 } 214 }
215 215
216 /** 216 /**
217 * Returns a [Future] that completes when this this helper finished all its 217 * Returns a [Future] that completes when this this helper finished all its
218 * scheduled tasks. 218 * scheduled tasks.
219 */ 219 */
220 Future waitForTasksFinished() { 220 Future waitForOperationsFinished() {
221 return waitForServerTasksFinished(server); 221 return waitForServerOperationsPerformed(server);
222 } 222 }
223 223
224 /** 224 /**
225 * Returns [AnalysisError]s recorded for the given [file]. 225 * Returns [AnalysisError]s recorded for the given [file].
226 * May be empty, but not `null`. 226 * May be empty, but not `null`.
227 */ 227 */
228 List<AnalysisError> getErrors(String file) { 228 List<AnalysisError> getErrors(String file) {
229 List<AnalysisError> errors = filesErrors[file]; 229 List<AnalysisError> errors = filesErrors[file];
230 if (errors != null) { 230 if (errors != null) {
231 return errors; 231 return errors;
(...skipping 23 matching lines...) Expand all
255 255
256 /** 256 /**
257 * Returns highlights recorded for the given [testFile]. 257 * Returns highlights recorded for the given [testFile].
258 * May be empty, but not `null`. 258 * May be empty, but not `null`.
259 */ 259 */
260 List<Map<String, Object>> getTestHighlights() { 260 List<Map<String, Object>> getTestHighlights() {
261 return getHighlights(testFile); 261 return getHighlights(testFile);
262 } 262 }
263 263
264 /** 264 /**
265 * Creates an empty project `/project/`. 265 * Creates an empty project `/project`.
266 */ 266 */
267 void createEmptyProject() { 267 void createEmptyProject() {
268 resourceProvider.newFolder('/project'); 268 resourceProvider.newFolder('/project');
269 Request request = new Request('0', METHOD_SET_ANALYSIS_ROOTS); 269 Request request = new Request('0', METHOD_SET_ANALYSIS_ROOTS);
270 request.setParameter(INCLUDED, ['/project']); 270 request.setParameter(INCLUDED, ['/project']);
271 request.setParameter(EXCLUDED, []); 271 request.setParameter(EXCLUDED, []);
272 handleSuccessfulRequest(request); 272 handleSuccessfulRequest(request);
273 } 273 }
274 274
275 /** 275 /**
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 316
317 testNotificationErrors() { 317 testNotificationErrors() {
318 AnalysisTestHelper helper; 318 AnalysisTestHelper helper;
319 319
320 setUp(() { 320 setUp(() {
321 helper = new AnalysisTestHelper(); 321 helper = new AnalysisTestHelper();
322 }); 322 });
323 323
324 test('ParserErrorCode', () { 324 test('ParserErrorCode', () {
325 helper.createSingleFileProject('library lib'); 325 helper.createSingleFileProject('library lib');
326 return helper.waitForTasksFinished().then((_) { 326 return helper.waitForOperationsFinished().then((_) {
327 List<AnalysisError> errors = helper.getTestErrors(); 327 List<AnalysisError> errors = helper.getTestErrors();
328 expect(errors, hasLength(1)); 328 expect(errors, hasLength(1));
329 AnalysisError error = errors[0]; 329 AnalysisError error = errors[0];
330 expect(error.file, '/project/bin/test.dart'); 330 expect(error.file, '/project/bin/test.dart');
331 expect(error.errorCode, 'ParserErrorCode.EXPECTED_TOKEN'); 331 expect(error.errorCode, 'ParserErrorCode.EXPECTED_TOKEN');
332 expect(error.offset, isPositive); 332 expect(error.offset, isPositive);
333 expect(error.length, isNonNegative); 333 expect(error.length, isNonNegative);
334 expect(error.message, isNotNull); 334 expect(error.message, isNotNull);
335 }); 335 });
336 }); 336 });
337 337
338 test('StaticWarningCode', () { 338 test('StaticWarningCode', () {
339 helper.createSingleFileProject([ 339 helper.createSingleFileProject([
340 'main() {', 340 'main() {',
341 ' print(unknown);', 341 ' print(unknown);',
342 '}']); 342 '}']);
343 return helper.waitForTasksFinished().then((_) { 343 return helper.waitForOperationsFinished().then((_) {
344 List<AnalysisError> errors = helper.getTestErrors(); 344 List<AnalysisError> errors = helper.getTestErrors();
345 expect(errors, hasLength(1)); 345 expect(errors, hasLength(1));
346 AnalysisError error = errors[0]; 346 AnalysisError error = errors[0];
347 expect(error.errorCode, 'StaticWarningCode.UNDEFINED_IDENTIFIER'); 347 expect(error.errorCode, 'StaticWarningCode.UNDEFINED_IDENTIFIER');
348 }); 348 });
349 }); 349 });
350 } 350 }
351 351
352 352
353 class NotificationHighlightHelper extends AnalysisTestHelper { 353 class NotificationHighlightHelper extends AnalysisTestHelper {
354 List<Map<String, Object>> regions; 354 List<Map<String, Object>> regions;
355 355
356 Future prepareRegions(then()) { 356 Future prepareRegions(then()) {
357 addAnalysisSubscriptionHighlight(testFile); 357 addAnalysisSubscriptionHighlight(testFile);
358 return waitForTasksFinished().then((_) { 358 return waitForOperationsFinished().then((_) {
359 regions = getTestHighlights(); 359 regions = getTestHighlights();
360 then(); 360 then();
361 }); 361 });
362 } 362 }
363 363
364 void assertHasRawRegion(HighlightType type, int offset, int length) { 364 void assertHasRawRegion(HighlightType type, int offset, int length) {
365 for (Map<String, Object> region in regions) { 365 for (Map<String, Object> region in regions) {
366 if (region['offset'] == offset && region['length'] == length 366 if (region['offset'] == offset && region['length'] == length
367 && region['type'] == type.name) { 367 && region['type'] == type.name) {
368 return; 368 return;
(...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after
1081 helper.assertHasRegion(HighlightType.TYPE_PARAMETER, 'T p)'); 1081 helper.assertHasRegion(HighlightType.TYPE_PARAMETER, 'T p)');
1082 }); 1082 });
1083 }); 1083 });
1084 } 1084 }
1085 1085
1086 1086
1087 testUpdateContent() { 1087 testUpdateContent() {
1088 test('full content', () { 1088 test('full content', () {
1089 AnalysisTestHelper helper = new AnalysisTestHelper(); 1089 AnalysisTestHelper helper = new AnalysisTestHelper();
1090 helper.createSingleFileProject('// empty'); 1090 helper.createSingleFileProject('// empty');
1091 return helper.waitForTasksFinished().then((_) { 1091 return helper.waitForOperationsFinished().then((_) {
1092 // no errors initially 1092 // no errors initially
1093 List<AnalysisError> errors = helper.getTestErrors(); 1093 List<AnalysisError> errors = helper.getTestErrors();
1094 expect(errors, isEmpty); 1094 expect(errors, isEmpty);
1095 // update code 1095 // update code
1096 { 1096 {
1097 Request request = new Request('0', METHOD_UPDATE_CONTENT); 1097 Request request = new Request('0', METHOD_UPDATE_CONTENT);
1098 request.setParameter('files', 1098 request.setParameter('files',
1099 { 1099 {
1100 helper.testFile : { 1100 helper.testFile : {
1101 CONTENT : 'library lib' 1101 CONTENT : 'library lib'
1102 } 1102 }
1103 }); 1103 });
1104 helper.handleSuccessfulRequest(request); 1104 helper.handleSuccessfulRequest(request);
1105 } 1105 }
1106 // wait, there is an error 1106 // wait, there is an error
1107 helper.waitForTasksFinished().then((_) { 1107 return helper.waitForOperationsFinished().then((_) {
1108 List<AnalysisError> errors = helper.getTestErrors(); 1108 List<AnalysisError> errors = helper.getTestErrors();
1109 expect(errors, hasLength(1)); 1109 expect(errors, hasLength(1));
1110 }); 1110 });
1111 }); 1111 });
1112 }); 1112 });
1113 1113
1114 test('incremental', () { 1114 test('incremental', () {
1115 AnalysisTestHelper helper = new AnalysisTestHelper(); 1115 AnalysisTestHelper helper = new AnalysisTestHelper();
1116 helper.createSingleFileProject('library A;'); 1116 helper.createSingleFileProject('library A;');
1117 return helper.waitForTasksFinished().then((_) { 1117 return helper.waitForOperationsFinished().then((_) {
1118 // no errors initially 1118 // no errors initially
1119 List<AnalysisError> errors = helper.getTestErrors(); 1119 List<AnalysisError> errors = helper.getTestErrors();
1120 expect(errors, isEmpty); 1120 expect(errors, isEmpty);
1121 // update code 1121 // update code
1122 { 1122 {
1123 Request request = new Request('0', METHOD_UPDATE_CONTENT); 1123 Request request = new Request('0', METHOD_UPDATE_CONTENT);
1124 request.setParameter('files', 1124 request.setParameter('files',
1125 { 1125 {
1126 helper.testFile : { 1126 helper.testFile : {
1127 CONTENT : 'library lib', 1127 CONTENT : 'library lib',
1128 OFFSET : 'library '.length, 1128 OFFSET : 'library '.length,
1129 OLD_LENGTH : 'A;'.length, 1129 OLD_LENGTH : 'A;'.length,
1130 NEW_LENGTH : 'lib'.length, 1130 NEW_LENGTH : 'lib'.length,
1131 } 1131 }
1132 }); 1132 });
1133 helper.handleSuccessfulRequest(request); 1133 helper.handleSuccessfulRequest(request);
1134 } 1134 }
1135 // wait, there is an error 1135 // wait, there is an error
1136 helper.waitForTasksFinished().then((_) { 1136 return helper.waitForOperationsFinished().then((_) {
1137 List<AnalysisError> errors = helper.getTestErrors(); 1137 List<AnalysisError> errors = helper.getTestErrors();
1138 expect(errors, hasLength(1)); 1138 expect(errors, hasLength(1));
1139 }); 1139 });
1140 }); 1140 });
1141 }); 1141 });
1142 } 1142 }
1143 1143
1144 1144
1145 void test_setSubscriptions() { 1145 void test_setSubscriptions() {
1146 test('before analysis', () { 1146 test('before analysis', () {
1147 AnalysisTestHelper helper = new AnalysisTestHelper(); 1147 AnalysisTestHelper helper = new AnalysisTestHelper();
1148 // subscribe 1148 // subscribe
1149 helper.addAnalysisSubscriptionHighlight(helper.testFile); 1149 helper.addAnalysisSubscriptionHighlight(helper.testFile);
1150 // create project 1150 // create project
1151 helper.createSingleFileProject('int V = 42;'); 1151 helper.createSingleFileProject('int V = 42;');
1152 // wait, there are highlight regions 1152 // wait, there are highlight regions
1153 helper.waitForTasksFinished().then((_) { 1153 helper.waitForOperationsFinished().then((_) {
1154 var highlights = helper.getHighlights(helper.testFile); 1154 var highlights = helper.getHighlights(helper.testFile);
1155 expect(highlights, isNot(isEmpty)); 1155 expect(highlights, isNot(isEmpty));
1156 }); 1156 });
1157 }); 1157 });
1158 1158
1159 test('after analysis', () { 1159 test('after analysis', () {
1160 AnalysisTestHelper helper = new AnalysisTestHelper(); 1160 AnalysisTestHelper helper = new AnalysisTestHelper();
1161 // create project 1161 // create project
1162 helper.createSingleFileProject('int V = 42;'); 1162 helper.createSingleFileProject('int V = 42;');
1163 // wait, no regions initially 1163 // wait, no regions initially
1164 return helper.waitForTasksFinished().then((_) { 1164 return helper.waitForOperationsFinished().then((_) {
1165 var highlights = helper.getHighlights(helper.testFile); 1165 var highlights = helper.getHighlights(helper.testFile);
1166 expect(highlights, isEmpty); 1166 expect(highlights, isEmpty);
1167 // subscribe 1167 // subscribe
1168 helper.addAnalysisSubscriptionHighlight(helper.testFile); 1168 helper.addAnalysisSubscriptionHighlight(helper.testFile);
1169 // wait, has regions 1169 // wait, has regions
1170 return helper.waitForTasksFinished().then((_) { 1170 return helper.waitForOperationsFinished().then((_) {
1171 var highlights = helper.getHighlights(helper.testFile); 1171 var highlights = helper.getHighlights(helper.testFile);
1172 expect(highlights, isNot(isEmpty)); 1172 expect(highlights, isNot(isEmpty));
1173 }); 1173 });
1174 }); 1174 });
1175 }); 1175 });
1176 } 1176 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/test/analysis_server_test.dart ('k') | pkg/analysis_server/test/domain_context_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698