From 466a91ab41a7ccb574110fc319e87daea4fd337f Mon Sep 17 00:00:00 2001 From: Hixie Date: Mon, 2 Nov 2015 13:09:55 -0800 Subject: [PATCH] fix the 'dart:profiler' bug ...by requiring a new version of analyzer. Also, when the subprocess is terminated unexpectedly, report the actual problem in more detail. --- packages/flutter_tools/lib/src/test/json_socket.dart | 2 +- packages/flutter_tools/lib/src/test/loader.dart | 4 ++-- packages/flutter_tools/lib/src/test/remote_test.dart | 3 ++- packages/flutter_tools/pubspec.yaml | 11 ++++++++++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/flutter_tools/lib/src/test/json_socket.dart b/packages/flutter_tools/lib/src/test/json_socket.dart index 8d29f0fd486..2edc71db8c5 100644 --- a/packages/flutter_tools/lib/src/test/json_socket.dart +++ b/packages/flutter_tools/lib/src/test/json_socket.dart @@ -12,7 +12,7 @@ class JSONSocket { final WebSocket _socket; final Stream stream; - final Future unusualTermination; + final Future unusualTermination; void send(dynamic data) { _socket.add(JSON.encode(data)); diff --git a/packages/flutter_tools/lib/src/test/loader.dart b/packages/flutter_tools/lib/src/test/loader.dart index 635fc60e273..0b6e090f9f7 100644 --- a/packages/flutter_tools/lib/src/test/loader.dart +++ b/packages/flutter_tools/lib/src/test/loader.dart @@ -90,7 +90,7 @@ void main() { '''); Completer> completer = new Completer>(); - Completer deathCompleter = new Completer(); + Completer deathCompleter = new Completer(); Process process = await _startProcess( listenerFile.path, @@ -139,7 +139,7 @@ void main() { if (kExpectAllTestsToCloseCleanly && output != '') print('Unexpected failure after test claimed to pass:\n$output'); } - deathCompleter.complete(); + deathCompleter.complete(output); } catch (e) { // Throwing inside this block causes all kinds of hard-to-debug issues // like stack overflows and hangs. So catch everything just in case. diff --git a/packages/flutter_tools/lib/src/test/remote_test.dart b/packages/flutter_tools/lib/src/test/remote_test.dart index 261604ea1c6..d3abea34925 100644 --- a/packages/flutter_tools/lib/src/test/remote_test.dart +++ b/packages/flutter_tools/lib/src/test/remote_test.dart @@ -53,8 +53,9 @@ class RemoteTest extends Test { } }); - _socket.unusualTermination.then((_) { + _socket.unusualTermination.then((String message) { if (subscription != null) { + controller.print('Unexpected subprocess termination: $message'); controller.addError(new Exception('Unexpected subprocess termination.'), new Trace.current()); controller.setState(new State(Status.complete, Result.error)); subscription.cancel(); diff --git a/packages/flutter_tools/pubspec.yaml b/packages/flutter_tools/pubspec.yaml index 3af2fc90fa1..7fe13dfa7e7 100644 --- a/packages/flutter_tools/pubspec.yaml +++ b/packages/flutter_tools/pubspec.yaml @@ -1,5 +1,5 @@ name: sky_tools -version: 0.0.32 +version: 0.0.33 description: Tools for building Flutter applications homepage: http://flutter.io author: Flutter Authors @@ -8,6 +8,7 @@ environment: sdk: '>=1.12.0 <2.0.0' dependencies: + analyzer: ">=0.26.1+17" # see note below archive: ^1.0.20 args: ^0.13.0 flx: ">=0.0.1 <0.1.0" @@ -21,6 +22,14 @@ dependencies: test: ^0.12.5 yaml: ^2.1.3 +# A note about 'analyzer': +# We don't actually depend on 'analyzer', but 'test' does. We aren't +# compatible with some older versions of 'analyzer'. We lie here, +# saying we do depend on it, so that we constrain the version that +# 'test' will get to a version that we'll probably be ok with. (This +# is why there's no upper bound on our dependency.) +# See also https://github.com/dart-lang/pub/issues/1356 + dev_dependencies: mockito: "^0.10.1"