OLD | NEW |
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.integration.analysis; | 5 library test.integration.analysis; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:collection'; | 8 import 'dart:collection'; |
9 import 'dart:convert'; | 9 import 'dart:convert'; |
10 import 'dart:io'; | 10 import 'dart:io'; |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 Directory sourceDirectory; | 108 Directory sourceDirectory; |
109 | 109 |
110 /** | 110 /** |
111 * Map from file path to the list of analysis errors which have most recently | 111 * Map from file path to the list of analysis errors which have most recently |
112 * been received for the file. | 112 * been received for the file. |
113 */ | 113 */ |
114 HashMap<String, List<AnalysisError>> currentAnalysisErrors = | 114 HashMap<String, List<AnalysisError>> currentAnalysisErrors = |
115 new HashMap<String, List<AnalysisError>>(); | 115 new HashMap<String, List<AnalysisError>>(); |
116 | 116 |
117 /** | 117 /** |
| 118 * The last list of analyzed files received. |
| 119 */ |
| 120 List<String> lastAnalyzedFiles; |
| 121 |
| 122 /** |
118 * True if the teardown process should skip sending a "server.shutdown" | 123 * True if the teardown process should skip sending a "server.shutdown" |
119 * request (e.g. because the server is known to have already shutdown). | 124 * request (e.g. because the server is known to have already shutdown). |
120 */ | 125 */ |
121 bool skipShutdown = false; | 126 bool skipShutdown = false; |
122 | 127 |
123 /** | 128 /** |
124 * True if we are currently subscribed to [SERVER_STATUS] updates. | 129 * True if we are currently subscribed to [SERVER_STATUS] updates. |
125 */ | 130 */ |
126 bool _subscribedToServerStatus = false; | 131 bool _subscribedToServerStatus = false; |
127 | 132 |
128 AbstractAnalysisServerIntegrationTest() { | 133 AbstractAnalysisServerIntegrationTest() { |
129 initializeInttestMixin(); | 134 initializeInttestMixin(); |
130 } | 135 } |
131 | 136 |
132 /** | 137 /** |
133 * Return a future which will complete when a 'server.status' notification is | 138 * Return a future which will complete when a 'server.status' notification is |
134 * received from the server with 'analyzing' set to false. | 139 * received from the server with 'analyzing' set to false. |
135 * | 140 * |
136 * The future will only be completed by 'server.status' notifications that are | 141 * The future will only be completed by 'server.status' notifications that are |
137 * received after this function call. So it is safe to use this getter | 142 * received after this function call. So it is safe to use this getter |
138 * multiple times in one test; each time it is used it will wait afresh for | 143 * multiple times in one test; each time it is used it will wait afresh for |
139 * analysis to finish. | 144 * analysis to finish. |
140 */ | 145 */ |
141 Future get analysisFinished { | 146 Future<ServerStatusParams> get analysisFinished { |
142 Completer completer = new Completer(); | 147 Completer completer = new Completer(); |
143 StreamSubscription subscription; | 148 StreamSubscription subscription; |
144 // This will only work if the caller has already subscribed to | 149 // This will only work if the caller has already subscribed to |
145 // SERVER_STATUS (e.g. using sendServerSetSubscriptions(['STATUS'])) | 150 // SERVER_STATUS (e.g. using sendServerSetSubscriptions(['STATUS'])) |
146 outOfTestExpect(_subscribedToServerStatus, isTrue); | 151 outOfTestExpect(_subscribedToServerStatus, isTrue); |
147 subscription = onServerStatus.listen((ServerStatusParams params) { | 152 subscription = onServerStatus.listen((ServerStatusParams params) { |
148 if (params.analysis != null && !params.analysis.isAnalyzing) { | 153 if (params.analysis != null && !params.analysis.isAnalyzing) { |
149 completer.complete(params); | 154 completer.complete(params); |
150 subscription.cancel(); | 155 subscription.cancel(); |
151 } | 156 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 * [sourceDirectory] is created. | 190 * [sourceDirectory] is created. |
186 */ | 191 */ |
187 Future setUp() async { | 192 Future setUp() async { |
188 sourceDirectory = new Directory(Directory.systemTemp | 193 sourceDirectory = new Directory(Directory.systemTemp |
189 .createTempSync('analysisServer') | 194 .createTempSync('analysisServer') |
190 .resolveSymbolicLinksSync()); | 195 .resolveSymbolicLinksSync()); |
191 | 196 |
192 onAnalysisErrors.listen((AnalysisErrorsParams params) { | 197 onAnalysisErrors.listen((AnalysisErrorsParams params) { |
193 currentAnalysisErrors[params.file] = params.errors; | 198 currentAnalysisErrors[params.file] = params.errors; |
194 }); | 199 }); |
| 200 onAnalysisAnalyzedFiles.listen((AnalysisAnalyzedFilesParams params) { |
| 201 lastAnalyzedFiles = params.directories; |
| 202 }); |
195 Completer serverConnected = new Completer(); | 203 Completer serverConnected = new Completer(); |
196 onServerConnected.listen((_) { | 204 onServerConnected.listen((_) { |
197 outOfTestExpect(serverConnected.isCompleted, isFalse); | 205 outOfTestExpect(serverConnected.isCompleted, isFalse); |
198 serverConnected.complete(); | 206 serverConnected.complete(); |
199 }); | 207 }); |
200 onServerError.listen((ServerErrorParams params) { | 208 onServerError.listen((ServerErrorParams params) { |
201 // A server error should never happen during an integration test. | 209 // A server error should never happen during an integration test. |
202 fail('${params.message}\n${params.stackTrace}'); | 210 fail('${params.message}\n${params.stackTrace}'); |
203 }); | 211 }); |
204 await startServer(); | 212 await startServer(); |
(...skipping 777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
982 void populateMismatches(item, List<MismatchDescriber> mismatches); | 990 void populateMismatches(item, List<MismatchDescriber> mismatches); |
983 | 991 |
984 /** | 992 /** |
985 * Create a [MismatchDescriber] describing a mismatch with a simple string. | 993 * Create a [MismatchDescriber] describing a mismatch with a simple string. |
986 */ | 994 */ |
987 MismatchDescriber simpleDescription(String description) => | 995 MismatchDescriber simpleDescription(String description) => |
988 (Description mismatchDescription) { | 996 (Description mismatchDescription) { |
989 mismatchDescription.add(description); | 997 mismatchDescription.add(description); |
990 }; | 998 }; |
991 } | 999 } |
OLD | NEW |