| Index: sdk/lib/_internal/pub/test/serve/utils.dart
|
| diff --git a/sdk/lib/_internal/pub/test/serve/utils.dart b/sdk/lib/_internal/pub/test/serve/utils.dart
|
| index 3a083923e61868e62a4dec541b797e4aea32cc01..53756d67452abe93d8b049347dc1008ce4a34c12 100644
|
| --- a/sdk/lib/_internal/pub/test/serve/utils.dart
|
| +++ b/sdk/lib/_internal/pub/test/serve/utils.dart
|
| @@ -67,4 +67,34 @@ void requestShould404(String urlPath) {
|
| expect(response.statusCode, equals(404));
|
| });
|
| }, "request $urlPath");
|
| +}
|
| +
|
| +/// Reads lines from pub serve's stdout until it prints the build success
|
| +/// message.
|
| +///
|
| +/// The schedule will not proceed until the output is found. If not found, it
|
| +/// will eventually time out.
|
| +void waitForBuildSuccess() {
|
| + nextLine() {
|
| + return _pubServer.nextLine().then((line) {
|
| + if (line.contains("successfully")) return;
|
| +
|
| + // This line wasn't it, so ignore it and keep trying.
|
| + return nextLine();
|
| + });
|
| + }
|
| +
|
| + schedule(nextLine);
|
| +}
|
| +
|
| +/// Returns a [Future] that completes after pumping the event queue [times]
|
| +/// times. By default, this should pump the event queue enough times to allow
|
| +/// any code to run, as long as it's not waiting on some external event.
|
| +Future _pumpEventQueue([int times=20]) {
|
| + if (times == 0) return new Future.value();
|
| + // We use a delayed future to allow runAsync events to finish. The
|
| + // Future.value or Future() constructors use runAsync themselves and would
|
| + // therefore not wait for runAsync callbacks that are scheduled after invoking
|
| + // this method.
|
| + return new Future.delayed(Duration.ZERO, () => _pumpEventQueue(times - 1));
|
| }
|
|
|