| 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 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 * True if the teardown process should skip sending a "server.shutdown" | 118 * True if the teardown process should skip sending a "server.shutdown" |
| 119 * request (e.g. because the server is known to have already shutdown). | 119 * request (e.g. because the server is known to have already shutdown). |
| 120 */ | 120 */ |
| 121 bool skipShutdown = false; | 121 bool skipShutdown = false; |
| 122 | 122 |
| 123 /** | 123 /** |
| 124 * True if we are currently subscribed to [SERVER_STATUS] updates. | 124 * True if we are currently subscribed to [SERVER_STATUS] updates. |
| 125 */ | 125 */ |
| 126 bool _subscribedToServerStatus = false; | 126 bool _subscribedToServerStatus = false; |
| 127 | 127 |
| 128 List<AnalysisError> getErrors(String pathname) => | |
| 129 currentAnalysisErrors[pathname]; | |
| 130 | |
| 131 AbstractAnalysisServerIntegrationTest() { | 128 AbstractAnalysisServerIntegrationTest() { |
| 132 initializeInttestMixin(); | 129 initializeInttestMixin(); |
| 133 } | 130 } |
| 134 | 131 |
| 135 /** | 132 /** |
| 136 * Return a future which will complete when a 'server.status' notification is | 133 * Return a future which will complete when a 'server.status' notification is |
| 137 * received from the server with 'analyzing' set to false. | 134 * received from the server with 'analyzing' set to false. |
| 138 * | 135 * |
| 139 * The future will only be completed by 'server.status' notifications that are | 136 * The future will only be completed by 'server.status' notifications that are |
| 140 * received after this function call. So it is safe to use this getter | 137 * received after this function call. So it is safe to use this getter |
| (...skipping 21 matching lines...) Expand all Loading... |
| 162 bool get enableNewAnalysisDriver => false; | 159 bool get enableNewAnalysisDriver => false; |
| 163 | 160 |
| 164 /** | 161 /** |
| 165 * Print out any messages exchanged with the server. If some messages have | 162 * Print out any messages exchanged with the server. If some messages have |
| 166 * already been exchanged with the server, they are printed out immediately. | 163 * already been exchanged with the server, they are printed out immediately. |
| 167 */ | 164 */ |
| 168 void debugStdio() { | 165 void debugStdio() { |
| 169 server.debugStdio(); | 166 server.debugStdio(); |
| 170 } | 167 } |
| 171 | 168 |
| 169 List<AnalysisError> getErrors(String pathname) => |
| 170 currentAnalysisErrors[pathname]; |
| 171 |
| 172 /** |
| 173 * Read a source file with the given absolute [pathname]. |
| 174 */ |
| 175 String readFile(String pathname) => new File(pathname).readAsStringSync(); |
| 176 |
| 172 @override | 177 @override |
| 173 Future sendServerSetSubscriptions(List<ServerService> subscriptions) { | 178 Future sendServerSetSubscriptions(List<ServerService> subscriptions) { |
| 174 _subscribedToServerStatus = subscriptions.contains(ServerService.STATUS); | 179 _subscribedToServerStatus = subscriptions.contains(ServerService.STATUS); |
| 175 return super.sendServerSetSubscriptions(subscriptions); | 180 return super.sendServerSetSubscriptions(subscriptions); |
| 176 } | 181 } |
| 177 | 182 |
| 178 /** | 183 /** |
| 179 * The server is automatically started before every test, and a temporary | 184 * The server is automatically started before every test, and a temporary |
| 180 * [sourceDirectory] is created. | 185 * [sourceDirectory] is created. |
| 181 */ | 186 */ |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 * Parent directories are created as necessary. | 279 * Parent directories are created as necessary. |
| 275 * | 280 * |
| 276 * Return a normalized path to the file (with symbolic links resolved). | 281 * Return a normalized path to the file (with symbolic links resolved). |
| 277 */ | 282 */ |
| 278 String writeFile(String pathname, String contents) { | 283 String writeFile(String pathname, String contents) { |
| 279 new Directory(dirname(pathname)).createSync(recursive: true); | 284 new Directory(dirname(pathname)).createSync(recursive: true); |
| 280 File file = new File(pathname); | 285 File file = new File(pathname); |
| 281 file.writeAsStringSync(contents); | 286 file.writeAsStringSync(contents); |
| 282 return file.resolveSymbolicLinksSync(); | 287 return file.resolveSymbolicLinksSync(); |
| 283 } | 288 } |
| 284 | |
| 285 /** | |
| 286 * Read a source file with the given absolute [pathname]. | |
| 287 */ | |
| 288 String readFile(String pathname) => new File(pathname).readAsStringSync(); | |
| 289 } | 289 } |
| 290 | 290 |
| 291 /** | 291 /** |
| 292 * An error result from a server request. | |
| 293 */ | |
| 294 class ServerErrorMessage { | |
| 295 final Map message; | |
| 296 | |
| 297 ServerErrorMessage(this.message); | |
| 298 | |
| 299 dynamic get error => message['error']; | |
| 300 | |
| 301 String toString() => message.toString(); | |
| 302 } | |
| 303 | |
| 304 /** | |
| 305 * Wrapper class for Matcher which doesn't create the underlying Matcher object | 292 * Wrapper class for Matcher which doesn't create the underlying Matcher object |
| 306 * until it is needed. This is necessary in order to create matchers that can | 293 * until it is needed. This is necessary in order to create matchers that can |
| 307 * refer to themselves (so that recursive data structures can be represented). | 294 * refer to themselves (so that recursive data structures can be represented). |
| 308 */ | 295 */ |
| 309 class LazyMatcher implements Matcher { | 296 class LazyMatcher implements Matcher { |
| 310 /** | 297 /** |
| 311 * Callback that will be used to create the matcher the first time it is | 298 * Callback that will be used to create the matcher the first time it is |
| 312 * needed. | 299 * needed. |
| 313 */ | 300 */ |
| 314 final MatcherCreator _creator; | 301 final MatcherCreator _creator; |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 * Return a future that will complete when all commands that have been sent | 538 * Return a future that will complete when all commands that have been sent |
| 552 * to the server so far have been flushed to the OS buffer. | 539 * to the server so far have been flushed to the OS buffer. |
| 553 */ | 540 */ |
| 554 Future flushCommands() { | 541 Future flushCommands() { |
| 555 return _process.stdin.flush(); | 542 return _process.stdin.flush(); |
| 556 } | 543 } |
| 557 | 544 |
| 558 /** | 545 /** |
| 559 * Stop the server. | 546 * Stop the server. |
| 560 */ | 547 */ |
| 561 Future kill(String reason) { | 548 Future<int> kill(String reason) { |
| 562 debugStdio(); | 549 debugStdio(); |
| 563 _recordStdio('FORCIBLY TERMINATING PROCESS: $reason'); | 550 _recordStdio('FORCIBLY TERMINATING PROCESS: $reason'); |
| 564 _process.kill(); | 551 _process.kill(); |
| 565 return _process.exitCode; | 552 return _process.exitCode; |
| 566 } | 553 } |
| 567 | 554 |
| 568 /** | 555 /** |
| 569 * Start listening to output from the server, and deliver notifications to | 556 * Start listening to output from the server, and deliver notifications to |
| 570 * [notificationProcessor]. | 557 * [notificationProcessor]. |
| 571 */ | 558 */ |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 double elapsedTime = currentElapseTime; | 751 double elapsedTime = currentElapseTime; |
| 765 line = "$elapsedTime: $line"; | 752 line = "$elapsedTime: $line"; |
| 766 if (_debuggingStdio) { | 753 if (_debuggingStdio) { |
| 767 print(line); | 754 print(line); |
| 768 } | 755 } |
| 769 _recordedStdio.add(line); | 756 _recordedStdio.add(line); |
| 770 } | 757 } |
| 771 } | 758 } |
| 772 | 759 |
| 773 /** | 760 /** |
| 761 * An error result from a server request. |
| 762 */ |
| 763 class ServerErrorMessage { |
| 764 final Map message; |
| 765 |
| 766 ServerErrorMessage(this.message); |
| 767 |
| 768 dynamic get error => message['error']; |
| 769 |
| 770 String toString() => message.toString(); |
| 771 } |
| 772 |
| 773 /** |
| 774 * Matcher that matches a list of objects, each of which satisfies the given | 774 * Matcher that matches a list of objects, each of which satisfies the given |
| 775 * matcher. | 775 * matcher. |
| 776 */ | 776 */ |
| 777 class _ListOf extends Matcher { | 777 class _ListOf extends Matcher { |
| 778 /** | 778 /** |
| 779 * Matcher which every element of the list must satisfy. | 779 * Matcher which every element of the list must satisfy. |
| 780 */ | 780 */ |
| 781 final Matcher elementMatcher; | 781 final Matcher elementMatcher; |
| 782 | 782 |
| 783 /** | 783 /** |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 982 void populateMismatches(item, List<MismatchDescriber> mismatches); | 982 void populateMismatches(item, List<MismatchDescriber> mismatches); |
| 983 | 983 |
| 984 /** | 984 /** |
| 985 * Create a [MismatchDescriber] describing a mismatch with a simple string. | 985 * Create a [MismatchDescriber] describing a mismatch with a simple string. |
| 986 */ | 986 */ |
| 987 MismatchDescriber simpleDescription(String description) => | 987 MismatchDescriber simpleDescription(String description) => |
| 988 (Description mismatchDescription) { | 988 (Description mismatchDescription) { |
| 989 mismatchDescription.add(description); | 989 mismatchDescription.add(description); |
| 990 }; | 990 }; |
| 991 } | 991 } |
| OLD | NEW |