| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS d.file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS d.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 pub_tests; | 5 library pub_tests; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:convert'; | 8 import 'dart:convert'; |
| 9 import 'dart:io'; | 9 import 'dart:io'; |
| 10 | 10 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 // Dart2js can take a long time to compile dart code, so we increase the | 107 // Dart2js can take a long time to compile dart code, so we increase the |
| 108 // timeout to cope with that. | 108 // timeout to cope with that. |
| 109 currentSchedule.timeout = new Duration(seconds: 15); | 109 currentSchedule.timeout = new Duration(seconds: 15); |
| 110 | 110 |
| 111 return startPub(args: pubArgs); | 111 return startPub(args: pubArgs); |
| 112 } | 112 } |
| 113 | 113 |
| 114 /// Schedules starting the "pub serve" process and records its port number for | 114 /// Schedules starting the "pub serve" process and records its port number for |
| 115 /// future requests. | 115 /// future requests. |
| 116 /// | 116 /// |
| 117 /// If [shouldGetFirst] is `true`, validates that pub get is run first. | 117 /// If [shouldGetFirst] is `true`, validates that pub get is run first. In that |
| 118 /// case, you can also pass [numDownloads] to specify how many packages should |
| 119 /// be downloaded during the get. |
| 118 /// | 120 /// |
| 119 /// Returns the `pub serve` process. | 121 /// Returns the `pub serve` process. |
| 120 ScheduledProcess pubServe({bool shouldGetFirst: false, | 122 ScheduledProcess pubServe({bool shouldGetFirst: false, |
| 121 Iterable<String> args}) { | 123 Iterable<String> args, int numDownloads: 0}) { |
| 122 _pubServer = startPubServe(args); | 124 _pubServer = startPubServe(args); |
| 123 | 125 |
| 124 currentSchedule.onComplete.schedule(() { | 126 currentSchedule.onComplete.schedule(() { |
| 125 if (_webSocket != null) { | 127 if (_webSocket != null) { |
| 126 _webSocket.close(); | 128 _webSocket.close(); |
| 127 _webSocket = null; | 129 _webSocket = null; |
| 128 _webSocketBroadcastStream = null; | 130 _webSocketBroadcastStream = null; |
| 129 } | 131 } |
| 130 }); | 132 }); |
| 131 | 133 |
| 132 if (shouldGetFirst) { | 134 if (shouldGetFirst) { |
| 133 expect(_pubServer.nextLine(), | 135 expect(_pubServer.nextLine(), |
| 134 completion(anyOf( | 136 completion(anyOf( |
| 135 startsWith("Your pubspec has changed"), | 137 startsWith("Your pubspec has changed"), |
| 136 startsWith("You don't have a lockfile")))); | 138 startsWith("You don't have a lockfile"), |
| 139 startsWith("You are missing some dependencies")))); |
| 137 expect(_pubServer.nextLine(), | 140 expect(_pubServer.nextLine(), |
| 138 completion(startsWith("Resolving dependencies..."))); | 141 completion(startsWith("Resolving dependencies..."))); |
| 142 |
| 143 for (var i = 0; i < numDownloads; i++) { |
| 144 expect(_pubServer.nextLine(), |
| 145 completion(startsWith("Downloading"))); |
| 146 } |
| 147 |
| 139 expect(_pubServer.nextLine(), | 148 expect(_pubServer.nextLine(), |
| 140 completion(equals("Got dependencies!"))); | 149 completion(equals("Got dependencies!"))); |
| 141 } | 150 } |
| 142 | 151 |
| 143 expect(_pubServer.nextLine().then(_parsePort), completes); | 152 expect(_pubServer.nextLine().then(_parsePort), completes); |
| 144 return _pubServer; | 153 return _pubServer; |
| 145 } | 154 } |
| 146 | 155 |
| 147 /// Parses the port number from the "Serving blah on 127.0.0.1:1234" line | 156 /// Parses the port number from the "Serving blah on 127.0.0.1:1234" line |
| 148 /// printed by pub serve. | 157 /// printed by pub serve. |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 /// socket. It omitted, request is JSON encoded to a string first. | 240 /// socket. It omitted, request is JSON encoded to a string first. |
| 232 void webSocketShouldReply(request, expectation, {bool encodeRequest: true}) { | 241 void webSocketShouldReply(request, expectation, {bool encodeRequest: true}) { |
| 233 schedule(() => _ensureWebSocket().then((_) { | 242 schedule(() => _ensureWebSocket().then((_) { |
| 234 if (encodeRequest) request = JSON.encode(request); | 243 if (encodeRequest) request = JSON.encode(request); |
| 235 _webSocket.add(request); | 244 _webSocket.add(request); |
| 236 return _webSocketBroadcastStream.first.then((value) { | 245 return _webSocketBroadcastStream.first.then((value) { |
| 237 expect(JSON.decode(value), expectation); | 246 expect(JSON.decode(value), expectation); |
| 238 }); | 247 }); |
| 239 }), "send $request to web socket and expect reply that $expectation"); | 248 }), "send $request to web socket and expect reply that $expectation"); |
| 240 } | 249 } |
| OLD | NEW |