Index: runtime/observatory/tests/service/test_helper.dart |
diff --git a/runtime/observatory/tests/service/test_helper.dart b/runtime/observatory/tests/service/test_helper.dart |
index 01704152c16bfe6876f5c001ef0023cf60956dce..1cbbe2f2ad36d853b3fb3c05b3f447dbb700cd10 100644 |
--- a/runtime/observatory/tests/service/test_helper.dart |
+++ b/runtime/observatory/tests/service/test_helper.dart |
@@ -26,7 +26,10 @@ class _TestLauncher { |
Platform.script.toFilePath(), |
_TESTEE_MODE_FLAG] {} |
- Future<int> launch(bool pause_on_start, bool pause_on_exit, bool trace_service) { |
+ Future<int> launch(bool pause_on_start, |
+ bool pause_on_exit, |
+ bool pause_on_unhandled_exceptions, |
+ bool trace_service) { |
assert(pause_on_start != null); |
assert(pause_on_exit != null); |
assert(trace_service != null); |
@@ -41,6 +44,9 @@ class _TestLauncher { |
if (pause_on_exit) { |
fullArgs.add('--pause-isolates-on-exit'); |
} |
+ if (pause_on_unhandled_exceptions) { |
+ fullArgs.add('--pause-isolates-on-unhandled-exceptions'); |
+ } |
fullArgs.addAll(Platform.executableArguments); |
fullArgs.addAll(args); |
print('** Launching $dartExecutable ${fullArgs.join(' ')}'); |
@@ -110,7 +116,8 @@ void runIsolateTests(List<String> mainArgs, |
bool pause_on_start: false, |
bool pause_on_exit: false, |
bool trace_service: false, |
- bool verbose_vm: false}) { |
+ bool verbose_vm: false, |
+ bool pause_on_unhandled_exceptions: false}) { |
assert(!pause_on_start || testeeBefore == null); |
if (mainArgs.contains(_TESTEE_MODE_FLAG)) { |
if (!pause_on_start) { |
@@ -128,7 +135,8 @@ void runIsolateTests(List<String> mainArgs, |
} |
} else { |
var process = new _TestLauncher(); |
- process.launch(pause_on_start, pause_on_exit, trace_service).then((port) { |
+ process.launch(pause_on_start, pause_on_exit, |
+ pause_on_unhandled_exceptions, trace_service).then((port) { |
if (mainArgs.contains("--gdb")) { |
port = 8181; |
} |
@@ -157,15 +165,14 @@ void runIsolateTests(List<String> mainArgs, |
} |
} |
- |
-Future<Isolate> hasStoppedAtBreakpoint(Isolate isolate) { |
+Future<Isolate> hasPausedFor(Isolate isolate, String kind) { |
// Set up a listener to wait for breakpoint events. |
Completer completer = new Completer(); |
isolate.vm.getEventStream(VM.kDebugStream).then((stream) { |
var subscription; |
subscription = stream.listen((ServiceEvent event) { |
- if (event.kind == ServiceEvent.kPauseBreakpoint) { |
- print('Breakpoint reached'); |
+ if (event.kind == kind) { |
+ print('Paused with $kind'); |
subscription.cancel(); |
if (completer != null) { |
// Reload to update isolate.pauseEvent. |
@@ -178,9 +185,9 @@ Future<Isolate> hasStoppedAtBreakpoint(Isolate isolate) { |
// Pause may have happened before we subscribed. |
isolate.reload().then((_) { |
if ((isolate.pauseEvent != null) && |
- (isolate.pauseEvent.kind == ServiceEvent.kPauseBreakpoint)) { |
+ (isolate.pauseEvent.kind == kind)) { |
// Already waiting at a breakpoint. |
- print('Breakpoint reached'); |
+ print('Paused with $kind'); |
subscription.cancel(); |
if (completer != null) { |
completer.complete(isolate); |
@@ -193,6 +200,13 @@ Future<Isolate> hasStoppedAtBreakpoint(Isolate isolate) { |
return completer.future; // Will complete when breakpoint hit. |
} |
+Future<Isolate> hasStoppedAtBreakpoint(Isolate isolate) { |
+ return hasPausedFor(isolate, ServiceEvent.kPauseBreakpoint); |
+} |
+ |
+Future<Isolate> hasStoppedWithUnhandledException(Isolate isolate) { |
+ return hasPausedFor(isolate, ServiceEvent.kPauseException); |
+} |
Future<Isolate> hasPausedAtStart(Isolate isolate) { |
// Set up a listener to wait for breakpoint events. |
@@ -343,7 +357,8 @@ Future runVMTests(List<String> mainArgs, |
bool pause_on_start: false, |
bool pause_on_exit: false, |
bool trace_service: false, |
- bool verbose_vm: false}) async { |
+ bool verbose_vm: false, |
+ bool pause_on_unhandled_exceptions: false}) async { |
if (mainArgs.contains(_TESTEE_MODE_FLAG)) { |
if (!pause_on_start) { |
if (testeeBefore != null) { |
@@ -362,6 +377,7 @@ Future runVMTests(List<String> mainArgs, |
var process = new _TestLauncher(); |
process.launch(pause_on_start, |
pause_on_exit, |
+ pause_on_unhandled_exceptions, |
trace_service).then((port) async { |
if (mainArgs.contains("--gdb")) { |
port = 8181; |