Index: sdk/lib/_internal/pub/test/test_pub.dart |
diff --git a/sdk/lib/_internal/pub/test/test_pub.dart b/sdk/lib/_internal/pub/test/test_pub.dart |
index 2ed23a93fde1968fe1f59f9de7d1a513d72e76ca..cfad445157cd0eaf9c6e46d3e9f354b9abeb49f6 100644 |
--- a/sdk/lib/_internal/pub/test/test_pub.dart |
+++ b/sdk/lib/_internal/pub/test/test_pub.dart |
@@ -19,6 +19,8 @@ import 'package:scheduled_test/scheduled_process.dart'; |
import 'package:scheduled_test/scheduled_server.dart'; |
import 'package:scheduled_test/scheduled_stream.dart'; |
import 'package:scheduled_test/scheduled_test.dart'; |
+import 'package:shelf/shelf.dart' as shelf; |
+import 'package:shelf/shelf_io.dart' as shelf_io; |
import 'package:unittest/compact_vm_config.dart'; |
import 'package:yaml/yaml.dart'; |
@@ -104,39 +106,20 @@ void serve([List<d.Descriptor> contents]) { |
schedule(() { |
return _closeServer().then((_) { |
- return HttpServer.bind("127.0.0.1", 0).then((server) { |
- _server = server; |
- server.listen((request) { |
- currentSchedule.heartbeat(); |
- var response = request.response; |
- try { |
- var path = request.uri.path.replaceFirst("/", ""); |
- _requestedPaths.add(path); |
- |
- response.persistentConnection = false; |
- var stream = baseDir.load(path); |
- |
- new ByteStream(stream).toBytes().then((data) { |
- currentSchedule.heartbeat(); |
- response.statusCode = 200; |
- response.contentLength = data.length; |
- response.add(data); |
- response.close(); |
- }).catchError((e) { |
- response.statusCode = 404; |
- response.contentLength = 0; |
- response.close(); |
- }); |
- } catch (e) { |
- currentSchedule.signalError(e); |
- response.statusCode = 500; |
- response.close(); |
- return; |
- } |
+ return shelf_io.serve((request) { |
+ currentSchedule.heartbeat(); |
+ var path = request.pathInfo.replaceFirst("/", ""); |
+ _requestedPaths.add(path); |
+ |
+ return validateStream(baseDir.load(path)) |
+ .then((stream) => new shelf.Response.ok(stream)) |
+ .catchError((error) { |
+ return new shelf.Response.notFound('File "$path" not found.'); |
}); |
+ }, '127.0.0.1', 0).then((server) { |
+ _server = server; |
_portCompleter.complete(_server.port); |
currentSchedule.onComplete.schedule(_closeServer); |
- return null; |
}); |
}); |
}, 'starting a server serving:\n${baseDir.describe()}'); |