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

Side by Side Diff: pkg/analysis_server/test/analysis/get_errors_test.dart

Issue 417433003: Send responses for any pending 'analysis.getErrors' requests during context removal. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fixes for review comments. Created 6 years, 5 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
« no previous file with comments | « pkg/analysis_server/lib/src/protocol.dart ('k') | pkg/analysis_server/test/mocks.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.analysis.get_errors; 5 library test.analysis.get_errors;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/src/computer/error.dart'; 9 import 'package:analysis_server/src/computer/error.dart';
10 import 'package:analysis_server/src/constants.dart'; 10 import 'package:analysis_server/src/constants.dart';
11 import 'package:analysis_server/src/domain_analysis.dart'; 11 import 'package:analysis_server/src/domain_analysis.dart';
12 import 'package:analysis_server/src/protocol.dart'; 12 import 'package:analysis_server/src/protocol.dart';
13 import 'package:analysis_services/constants.dart'; 13 import 'package:analysis_services/constants.dart';
14 import 'package:analysis_testing/reflective_tests.dart'; 14 import 'package:analysis_testing/reflective_tests.dart';
15 import 'package:analyzer/file_system/file_system.dart';
15 import 'package:unittest/unittest.dart'; 16 import 'package:unittest/unittest.dart';
16 17
17 import '../analysis_abstract.dart'; 18 import '../analysis_abstract.dart';
18 19
19 20
20 main() { 21 main() {
21 group('notification.hover', () { 22 group('getErrors', () {
22 runReflectiveTests(GetErrorsTest); 23 runReflectiveTests(GetErrorsTest);
23 }); 24 });
24 } 25 }
25 26
26 27
27 @ReflectiveTestCase() 28 @ReflectiveTestCase()
28 class GetErrorsTest extends AbstractAnalysisTest { 29 class GetErrorsTest extends AbstractAnalysisTest {
29 Future<List<AnalysisError>> getErrors() { 30 static const String requestId = 'test-getError';
30 return getErrorsForFile(testFile);
31 }
32
33 Future<List<AnalysisError>> getErrorsForFile(String file) {
34 return waitForTasksFinished().then((_) {
35 String requestId = 'test-getError';
36 // send the Request
37 Request request = new Request(requestId, ANALYSIS_GET_ERRORS);
38 request.setParameter(FILE, file);
39 server.handleRequest(request);
40 // wait for the Response
41 waitForResponse() {
42 for (Response response in serverChannel.responsesReceived) {
43 if (response.id == requestId) {
44 List errorsJsons = response.getResult(ERRORS);
45 return errorsJsons.map(AnalysisError.fromJson).toList();
46 }
47 }
48 return new Future(waitForResponse);
49 }
50 return new Future(waitForResponse);
51 });
52 }
53 31
54 @override 32 @override
55 void setUp() { 33 void setUp() {
56 super.setUp(); 34 super.setUp();
57 server.handlers = [new AnalysisDomainHandler(server),]; 35 server.handlers = [new AnalysisDomainHandler(server),];
58 createProject(); 36 createProject();
59 } 37 }
60 38
39 test_fileDoesNotExist() {
40 String file = '$projectPath/doesNotExist.dart';
41 return _getErrors(file).then((List<AnalysisError> errors) {
42 expect(errors, isEmpty);
43 });
44 }
45
46 test_fileWithoutContext() {
47 String file = '/outside.dart';
48 addFile(file, '''
49 main() {
50 print(42);
51 }
52 ''');
53 return _getErrors(file).then((List<AnalysisError> errors) {
54 expect(errors, isEmpty);
55 });
56 }
57
61 test_hasErrors() { 58 test_hasErrors() {
62 addTestFile(''' 59 addTestFile('''
63 main() { 60 main() {
64 print(42) 61 print(42)
65 } 62 }
66 '''); 63 ''');
67 return getErrors().then((List<AnalysisError> errors) { 64 return _getErrors(testFile).then((List<AnalysisError> errors) {
68 expect(errors, hasLength(1)); 65 expect(errors, hasLength(1));
69 { 66 {
70 AnalysisError error = errors[0]; 67 AnalysisError error = errors[0];
71 expect(error.severity, 'ERROR'); 68 expect(error.severity, 'ERROR');
72 expect(error.type, 'SYNTACTIC_ERROR'); 69 expect(error.type, 'SYNTACTIC_ERROR');
73 expect(error.location.file, testFile); 70 expect(error.location.file, testFile);
74 expect(error.location.startLine, 2); 71 expect(error.location.startLine, 2);
75 } 72 }
76 }); 73 });
77 } 74 }
78 75
79 test_noErrors() { 76 test_noErrors() {
80 addTestFile(''' 77 addTestFile('''
81 main() { 78 main() {
82 print(42); 79 print(42);
83 } 80 }
84 '''); 81 ''');
85 return getErrors().then((List<AnalysisError> errors) { 82 return _getErrors(testFile).then((List<AnalysisError> errors) {
86 expect(errors, isEmpty); 83 expect(errors, isEmpty);
87 }); 84 });
88 } 85 }
89 86
90 test_fileWithoutContext() { 87 test_removeContextAfterRequest() {
91 String file = '/outside.dart'; 88 addTestFile('''
92 addFile(file, '''
93 main() { 89 main() {
94 print(42); 90 print(42)
95 } 91 }
96 '''); 92 ''');
97 return getErrorsForFile(file).then((List<AnalysisError> errors) { 93 // handle the request synchronously
98 expect(errors, isEmpty); 94 Request request = _createGetErrorsRequest();
95 server.handleRequest(request);
96 // remove context, causes sending a 'cancelled' error
97 {
98 Folder projectFolder = resourceProvider.getResource(projectPath);
99 server.contextDirectoryManager.removeContext(projectFolder);
100 }
101 // wait for an error response
102 return serverChannel.waitForResponse(request).then((Response response) {
103 expect(response.getResult(ERRORS), isEmpty);
104 RequestError error = response.error;
105 expect(error, isNotNull);
106 expect(error.code, -13);
107 });
108 }
109
110 Request _createGetErrorsRequest() {
111 Request request = new Request(requestId, ANALYSIS_GET_ERRORS);
112 request.setParameter(FILE, testFile);
113 return request;
114 }
115
116 Future<List<AnalysisError>> _getErrors(String file) {
117 Request request = _createGetErrorsRequest();
118 return serverChannel.sendRequest(request).then((Response response) {
119 List errorsJsons = response.getResult(ERRORS);
120 return errorsJsons.map(AnalysisError.fromJson).toList();
99 }); 121 });
100 } 122 }
101 } 123 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/protocol.dart ('k') | pkg/analysis_server/test/mocks.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698