| Index: utils/tests/pub/test_pub.dart
|
| diff --git a/utils/tests/pub/test_pub.dart b/utils/tests/pub/test_pub.dart
|
| index 2a148f214c052954c41a0ccc19309eb84f5b14c8..64ca42391aa6978650c7aa4e5af3c446fdcf4538 100644
|
| --- a/utils/tests/pub/test_pub.dart
|
| +++ b/utils/tests/pub/test_pub.dart
|
| @@ -102,36 +102,38 @@ void serve([List<Descriptor> contents]) {
|
|
|
| _schedule((_) {
|
| return _closeServer().then((_) {
|
| - _server = new HttpServer();
|
| - _server.defaultRequestHandler = (request, response) {
|
| - var path = request.uri.replaceFirst("/", "").split("/");
|
| - response.persistentConnection = false;
|
| - var stream;
|
| - try {
|
| - stream = baseDir.load(path);
|
| - } catch (e) {
|
| - response.statusCode = 404;
|
| - response.contentLength = 0;
|
| - response.outputStream.close();
|
| - return;
|
| - }
|
| + return HttpServer.bind("127.0.0.1", 0).then((server) {
|
| + _server = server;
|
| + server.listen((request) {
|
| + var response = request.response;
|
| + var path = request.uri.path.replaceFirst("/", "").split("/");
|
| + response.persistentConnection = false;
|
| + var stream;
|
| + try {
|
| + stream = baseDir.load(path);
|
| + } catch (e) {
|
| + response.statusCode = 404;
|
| + response.contentLength = 0;
|
| + response.close();
|
| + return;
|
| + }
|
|
|
| - stream.toBytes().then((data) {
|
| - response.statusCode = 200;
|
| - response.contentLength = data.length;
|
| - response.outputStream.write(data);
|
| - response.outputStream.close();
|
| - }).catchError((e) {
|
| - print("Exception while handling ${request.uri}: $e");
|
| - response.statusCode = 500;
|
| - response.reasonPhrase = e.message;
|
| - response.outputStream.close();
|
| + stream.toBytes().then((data) {
|
| + response.statusCode = 200;
|
| + response.contentLength = data.length;
|
| + response.add(data);
|
| + response.close();
|
| + }).catchError((e) {
|
| + print("Exception while handling ${request.uri}: $e");
|
| + response.statusCode = 500;
|
| + response.reasonPhrase = e.message;
|
| + response.close();
|
| + });
|
| });
|
| - };
|
| - _server.listen("127.0.0.1", 0);
|
| - _portCompleter.complete(_server.port);
|
| - _scheduleCleanup((_) => _closeServer());
|
| - return null;
|
| + _portCompleter.complete(_server.port);
|
| + _scheduleCleanup((_) => _closeServer());
|
| + return null;
|
| + });
|
| });
|
| });
|
| }
|
| @@ -467,15 +469,15 @@ final String packagesPath = "$appPath/packages";
|
| typedef Future _ScheduledEvent(String parentDir);
|
|
|
| /// The list of events that are scheduled to run as part of the test case.
|
| -List<_ScheduledEvent> _scheduled;
|
| +Queue<_ScheduledEvent> _scheduled;
|
|
|
| /// The list of events that are scheduled to run after the test case, even if
|
| /// it failed.
|
| -List<_ScheduledEvent> _scheduledCleanup;
|
| +Queue<_ScheduledEvent> _scheduledCleanup;
|
|
|
| /// The list of events that are scheduled to run after the test case only if it
|
| /// failed.
|
| -List<_ScheduledEvent> _scheduledOnException;
|
| +Queue<_ScheduledEvent> _scheduledOnException;
|
|
|
| /// Set to true when the current batch of scheduled events should be aborted.
|
| bool _abortScheduled = false;
|
| @@ -704,18 +706,16 @@ void useMockClient(MockClient client) {
|
| });
|
| }
|
|
|
| -Future _runScheduled(List<_ScheduledEvent> scheduled) {
|
| +Future _runScheduled(Queue<_ScheduledEvent> scheduled) {
|
| if (scheduled == null) return new Future.immediate(null);
|
| - var iterator = scheduled.iterator;
|
|
|
| Future runNextEvent(_) {
|
| - if (_abortScheduled || !iterator.moveNext()) {
|
| + if (_abortScheduled || scheduled.isEmpty) {
|
| _abortScheduled = false;
|
| - scheduled.clear();
|
| return new Future.immediate(null);
|
| }
|
|
|
| - var future = iterator.current(_sandboxDir);
|
| + var future = scheduled.removeFirst()(_sandboxDir);
|
| if (future != null) {
|
| return future.then(runNextEvent);
|
| } else {
|
| @@ -1155,8 +1155,8 @@ class TarFileDescriptor extends Descriptor {
|
| // TODO(nweiz): propagate any errors to the return value. See issue 3657.
|
| withTempDir((tempDir) {
|
| return create(tempDir).then((tar) {
|
| - var sourceStream = new File(tar).openInputStream();
|
| - return store(wrapInputStream(sourceStream), controller);
|
| + var sourceStream = new File(tar).openRead();
|
| + return store(sourceStream, controller);
|
| });
|
| });
|
| return new ByteStream(controller.stream);
|
| @@ -1500,11 +1500,11 @@ class ScheduledServer {
|
| factory ScheduledServer() {
|
| var scheduledServer;
|
| scheduledServer = new ScheduledServer._(_scheduleValue((_) {
|
| - var server = new HttpServer();
|
| - server.defaultRequestHandler = scheduledServer._awaitHandle;
|
| - server.listen("127.0.0.1", 0);
|
| - _scheduleCleanup((_) => server.close());
|
| - return new Future.immediate(server);
|
| + return HttpServer.bind("127.0.0.1", 0).then((server) {
|
| + server.listen(scheduledServer._awaitHandle);
|
| + _scheduleCleanup((_) => server.close());
|
| + return server;
|
| + });
|
| }));
|
| return scheduledServer;
|
| }
|
| @@ -1526,8 +1526,7 @@ class ScheduledServer {
|
| var requestCompleteCompleter = new Completer();
|
| handlerCompleter.complete((request, response) {
|
| expect(request.method, equals(method));
|
| - // TODO(nweiz): Use request.path once issue 7464 is fixed.
|
| - expect(Uri.parse(request.uri).path, equals(path));
|
| + expect(request.uri.path, equals(path));
|
|
|
| var future = handler(request, response);
|
| if (future == null) future = new Future.immediate(null);
|
| @@ -1545,17 +1544,18 @@ class ScheduledServer {
|
| _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;
|
| + void _awaitHandle(HttpRequest request) {
|
| + HttpResponse response = request.response;
|
| + if (_ignored.contains(new Pair(request.method, request.uri.path))) return;
|
| var future = timeout(defer(() {
|
| if (_handlers.isEmpty) {
|
| - fail('Unexpected ${request.method} request to ${request.path}.');
|
| + fail('Unexpected ${request.method} request to ${request.uri.path}.');
|
| }
|
| return _handlers.removeFirst();
|
| }).then((handler) {
|
| handler(request, response);
|
| }), _SCHEDULE_TIMEOUT, "waiting for a handler for ${request.method} "
|
| - "${request.path}");
|
| + "${request.uri.path}");
|
| expect(future, completes);
|
| }
|
| }
|
| @@ -1587,8 +1587,8 @@ Future _awaitObject(object) {
|
|
|
| /// Schedules a callback to be called as part of the test case.
|
| void _schedule(_ScheduledEvent event) {
|
| - if (_scheduled == null) _scheduled = [];
|
| - _scheduled.add(event);
|
| + if (_scheduled == null) _scheduled = new Queue();
|
| + _scheduled.addLast(event);
|
| }
|
|
|
| /// Like [_schedule], but pipes the return value of [event] to a returned
|
| @@ -1605,15 +1605,15 @@ Future _scheduleValue(_ScheduledEvent event) {
|
| /// Schedules a callback to be called after the test case has completed, even
|
| /// if it failed.
|
| void _scheduleCleanup(_ScheduledEvent event) {
|
| - if (_scheduledCleanup == null) _scheduledCleanup = [];
|
| - _scheduledCleanup.add(event);
|
| + if (_scheduledCleanup == null) _scheduledCleanup = new Queue();
|
| + _scheduledCleanup.addLast(event);
|
| }
|
|
|
| /// Schedules a callback to be called after the test case has completed, but
|
| /// only if it failed.
|
| void _scheduleOnException(_ScheduledEvent event) {
|
| - if (_scheduledOnException == null) _scheduledOnException = [];
|
| - _scheduledOnException.add(event);
|
| + if (_scheduledOnException == null) _scheduledOnException = new Queue();
|
| + _scheduledOnException.addLast(event);
|
| }
|
|
|
| /// Like [expect], but for [Future]s that complete as part of the scheduled
|
|
|