| Index: runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart
|
| diff --git a/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart b/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1812693b87fda160be3e42c1ea85caa71b1c908f
|
| --- /dev/null
|
| +++ b/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart
|
| @@ -0,0 +1,53 @@
|
| +// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +// VMOptions=--error_on_bad_type --error_on_bad_override
|
| +
|
| +import 'package:observatory/service_io.dart';
|
| +import 'package:observatory/models.dart' as M;
|
| +import 'package:unittest/unittest.dart';
|
| +import 'test_helper.dart';
|
| +import 'service_test_common.dart';
|
| +
|
| +const LINE_A = 29;
|
| +
|
| +class Foo {
|
| +
|
| +}
|
| +
|
| +doThrow() {
|
| + throw "TheException"; // Line 13.
|
| + return "end of doThrow";
|
| +}
|
| +
|
| +asyncThrower() async {
|
| + doThrow();
|
| +}
|
| +
|
| +testeeMain() async {
|
| + // No try ... catch.
|
| + await asyncThrower();
|
| +}
|
| +
|
| +var tests = [
|
| + hasStoppedWithUnhandledException,
|
| +
|
| + (Isolate isolate) async {
|
| + print("We stoppped!");
|
| + var stack = await isolate.getStack();
|
| + expect(stack['asyncCausalFrames'], isNotNull);
|
| + var asyncStack = stack['asyncCausalFrames'];
|
| + expect(asyncStack[0].toString(), contains('doThrow'));
|
| + expect(asyncStack[1].toString(), contains('asyncThrower'));
|
| + expect(asyncStack[2].kind, equals(M.FrameKind.asyncSuspensionMarker));
|
| + expect(asyncStack[3].toString(), contains('testeeMain'));
|
| + // We've stopped at LINE_A.
|
| + expect(await asyncStack[3].location.toUserString(),
|
| + contains('.dart:$LINE_A'));
|
| + }
|
| +];
|
| +
|
| +main(args) => runIsolateTests(args,
|
| + tests,
|
| + pause_on_unhandled_exceptions: true,
|
| + testeeConcurrent: testeeMain);
|
|
|