From e4b072009d138e08062b5cf9eaca134f641f4494 Mon Sep 17 00:00:00 2001 From: Ivan Naydonov Date: Tue, 21 Aug 2018 10:23:19 -0700 Subject: [PATCH 1/2] Fix #1774 --- build_runner/lib/src/server/server.dart | 9 ++++++++- build_runner/test/server/serve_handler_test.dart | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/build_runner/lib/src/server/server.dart b/build_runner/lib/src/server/server.dart index b37c74651..f9f55e4c0 100644 --- a/build_runner/lib/src/server/server.dart +++ b/build_runner/lib/src/server/server.dart @@ -56,7 +56,7 @@ class ServeHandler implements BuildState { _state.buildResults.listen((result) { _lastBuildResult = result; _webSocketHandler.emitUpdateMessage(result); - }); + }).onDone(_webSocketHandler.close); } @override @@ -202,6 +202,13 @@ class BuildUpdatesWebSocketHandler { connectionsByRootDir.remove(rootDir); } } + + Future close() async { + await Future.wait(connectionsByRootDir.values + .expand((x) => x) + .map((connection) => connection.sink.close())); + return; + } } shelf.Handler _injectBuildUpdatesClientCode(shelf.Handler innerHandler) { diff --git a/build_runner/test/server/serve_handler_test.dart b/build_runner/test/server/serve_handler_test.dart index b6e0083f9..7ea1bd960 100644 --- a/build_runner/test/server/serve_handler_test.dart +++ b/build_runner/test/server/serve_handler_test.dart @@ -327,6 +327,13 @@ void main() { await clientChannel1.sink.close(); }); + test('closes listners', () async { + expect(clientChannel1.stream, emitsDone); + await createMockConnection(serverChannel1, 'web'); + await handler.close(); + expect(clientChannel1.closeCode, isNotNull); + }); + test('emmits build results digests', () async { _addSource('a|web/index.html', 'content1'); _addSource('a|lib/some.dart.js', 'content2'); From 511b585ab6e5ef33cb92d317318528783e21ce68 Mon Sep 17 00:00:00 2001 From: Ivan Naydonov Date: Tue, 21 Aug 2018 10:34:21 -0700 Subject: [PATCH 2/2] Fix nit --- build_runner/lib/src/server/server.dart | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build_runner/lib/src/server/server.dart b/build_runner/lib/src/server/server.dart index f9f55e4c0..475f9ec83 100644 --- a/build_runner/lib/src/server/server.dart +++ b/build_runner/lib/src/server/server.dart @@ -203,11 +203,10 @@ class BuildUpdatesWebSocketHandler { } } - Future close() async { - await Future.wait(connectionsByRootDir.values + Future close() { + return Future.wait(connectionsByRootDir.values .expand((x) => x) .map((connection) => connection.sink.close())); - return; } }