Index: lib/src/runner/browser/content_shell.dart |
diff --git a/lib/src/runner/browser/content_shell.dart b/lib/src/runner/browser/content_shell.dart |
index 2df48c32f4556fc00e457b6eb2158be793f3ea7e..6849e391a8ea83923021718c8d039e76703b04d6 100644 |
--- a/lib/src/runner/browser/content_shell.dart |
+++ b/lib/src/runner/browser/content_shell.dart |
@@ -8,6 +8,9 @@ import 'dart:async'; |
import 'dart:convert'; |
import 'dart:io'; |
+import 'package:stack_trace/stack_trace.dart'; |
+ |
+import '../../utils.dart'; |
import '../application_exception.dart'; |
import 'browser.dart'; |
@@ -71,9 +74,20 @@ class ContentShell implements Browser { |
"latest/dartium/"); |
} |
- if (exitCode != 0) throw "Content shell failed with exit code $exitCode."; |
- }).then(_onExitCompleter.complete) |
- .catchError(_onExitCompleter.completeError); |
+ if (exitCode == 0) return null; |
+ |
+ |
+ return UTF8.decodeStream(_process.stderr).then((error) { |
+ throw new ApplicationException( |
+ "Content shell failed with exit code $exitCode:\n$error"); |
+ }); |
+ }).then(_onExitCompleter.complete).catchError((error, stackTrace) { |
+ if (stackTrace == null) stackTrace = new Trace.current(); |
+ _onExitCompleter.completeError( |
+ new ApplicationException( |
+ "Failed to start content shell: ${getErrorMessage(error)}."), |
+ stackTrace); |
+ }); |
} |
Future close() { |