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 a74498ba9460d6d75fc07e74d2e3314d3d99307a..8a89f29bbb1261b1d2ba3adc89f9039d02184a3a 100644 |
--- a/sdk/lib/_internal/pub/test/serve/utils.dart |
+++ b/sdk/lib/_internal/pub/test/serve/utils.dart |
@@ -21,15 +21,41 @@ ScheduledProcess _pubServer; |
int _port; |
/// Schedules starting the "pub serve" process. |
-void startPubServe() { |
+/// |
+/// If [shouldInstallFirst] is `true`, then validates that pub install is run |
nweiz
2013/07/30 19:34:36
Nit: remove "then"
Bob Nystrom
2013/07/30 21:35:32
Done.
|
+/// first. |
+void startPubServe({bool shouldInstallFirst: false}) { |
// Use port 0 to get an ephemeral port. |
_pubServer = startPub(args: ["serve", "--port=0"]); |
- expect(_pubServer.nextLine().then((line) { |
- var match = new RegExp(r"localhost:(\d+)").firstMatch(line); |
- assert(match != null); |
- _port = int.parse(match[1]); |
- }), completes); |
+ if (shouldInstallFirst) { |
+ schedule(() { |
+ return _pubServer.nextLine().then((line1) { |
+ expect(line1, startsWith("Dependencies have changed")); |
+ return _pubServer.nextLine(); |
+ }).then((line2) { |
+ expect(line2, startsWith("Resolving dependencies...")); |
+ return _pubServer.nextLine(); |
+ }).then((line3) { |
+ expect(line3, equals("Dependencies installed!")); |
+ return _pubServer.nextLine(); |
+ }).then((line4) { |
+ _parsePort(line4); |
+ }); |
+ }); |
nweiz
2013/07/30 19:34:36
Since [nextLine] is scheduled internally, you can
Bob Nystrom
2013/07/30 21:35:32
Done.
|
+ |
+ return; |
+ } |
+ |
+ expect(_pubServer.nextLine().then(_parsePort), completes); |
+} |
+ |
+/// Parses the port number from the "Serving blah on localhost:1234" line |
+/// printed by pub serve. |
+void _parsePort(String line) { |
+ var match = new RegExp(r"localhost:(\d+)").firstMatch(line); |
+ assert(match != null); |
+ _port = int.parse(match[1]); |
} |
void endPubServe() { |