Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Unified Diff: utils/tests/pub/test_pub.dart

Issue 11434118: Add validation infrastructure for "pub lish". (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix a chain/transform bug Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: utils/tests/pub/test_pub.dart
diff --git a/utils/tests/pub/test_pub.dart b/utils/tests/pub/test_pub.dart
index ef6cd7f6d76f450822704007d232e8f052cdbd40..308382a7b97fa7323eb9ef98f748c731d0d38570 100644
--- a/utils/tests/pub/test_pub.dart
+++ b/utils/tests/pub/test_pub.dart
@@ -268,7 +268,12 @@ Descriptor libDir(String name, [String code]) {
* [version], and [dependencies].
*/
Map package(String name, String version, [List dependencies]) {
- var package = {"name": name, "version": version};
+ var package = {
+ "name": name,
+ "version": version,
+ "author": "Nathan Weizenbaum <nweiz@google.com>",
+ "homepage": "http://pub.dartlang.org"
+ };
if (dependencies != null) {
package["dependencies"] = _dependencyListToMap(dependencies);
}
@@ -1349,6 +1354,34 @@ class ScheduledProcess {
});
}
+ /// Reads the remaining stdout from the process. This should only be called
+ /// after kill() or shouldExit().
+ Future<String> remainingStdout() {
+ if (!_endScheduled) {
+ throw new StateError("remainingStdout() should only be called after "
+ "kill() or shouldExit().");
+ }
+
+ return _scheduleValue((_) {
+ return timeout(_stdout.chain(consumeStringInputStream), 5000,
Bob Nystrom 2012/12/05 18:57:40 Make a constant for all of these "5000"s, please.
nweiz 2012/12/05 21:59:59 Done.
+ "waiting for the last stdout line from process $name");
+ });
+ }
+
+ /// Reads the remaining stderr from the process. This should only be called
+ /// after kill() or shouldExit().
+ Future<String> remainingStderr() {
+ if (!_endScheduled) {
+ throw new StateError("remainingStderr() should only be called after "
+ "kill() or shouldExit().");
+ }
+
+ return _scheduleValue((_) {
+ return timeout(_stderr.chain(consumeStringInputStream), 5000,
+ "waiting for the last stderr line from process $name");
+ });
+ }
+
/// Writes [line] to the process as stdin.
void writeLine(String line) {
_schedule((_) => _process.transform((p) => p.stdin.writeString('$line\n')));
@@ -1411,6 +1444,9 @@ class ScheduledServer {
/// The queue of handlers to run for upcoming requests.
final _handlers = new Queue<Future>();
+ /// The requests to be ignored.
+ final _ignored = new Set<Pair<String, String>>();
+
ScheduledServer._(this._server);
/// Creates a new server listening on an automatically-allocated port on
@@ -1456,14 +1492,19 @@ class ScheduledServer {
_handlers.add(handlerCompleter.future);
}
+ /// Ignore all requests with the given [method] and [path]. If one is
+ /// received, don't respond to it.
+ void ignore(String method, String path) =>
+ _ignored.add(new Pair(method, path));
+
/// Raises an error complaining of an unexpected request.
void _awaitHandle(HttpRequest request, HttpResponse response) {
+ if (_ignored.contains(new Pair(request.method, request.path))) return;
var future = timeout(new Future.immediate(null).chain((_) {
- var handlerFuture = _handlers.removeFirst();
- if (handlerFuture == null) {
+ if (_handlers.isEmpty) {
fail('Unexpected ${request.method} request to ${request.path}.');
}
- return handlerFuture;
+ return _handlers.removeFirst();
}).transform((handler) {
handler(request, response);
}), 5000, "waiting for a handler for ${request.method} ${request.path}");

Powered by Google App Engine
This is Rietveld 408576698