mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
This auto-formats all *.dart files in the repository outside of the `engine` subdirectory and enforces that these files stay formatted with a presubmit check. **Reviewers:** Please carefully review all the commits except for the one titled "formatted". The "formatted" commit was auto-generated by running `dev/tools/format.sh -a -f`. The other commits were hand-crafted to prepare the repo for the formatting change. I recommend reviewing the commits one-by-one via the "Commits" tab and avoiding Github's "Files changed" tab as it will likely slow down your browser because of the size of this PR. --------- Co-authored-by: Kate Lovett <katelovett@google.com> Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com>
1057 lines
32 KiB
Dart
1057 lines
32 KiB
Dart
// Copyright 2014 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
void main() {
|
|
test('Parses line', () {
|
|
expect(StackFrame.fromStackTraceLine(stackString.split('\n')[0]), stackFrames[0]);
|
|
});
|
|
|
|
test('Parses string', () {
|
|
expect(StackFrame.fromStackString(stackString), stackFrames);
|
|
});
|
|
|
|
test('Parses StackTrace', () {
|
|
expect(StackFrame.fromStackTrace(StackTrace.fromString(stackString)), stackFrames);
|
|
});
|
|
|
|
test('Parses complex stack', () {
|
|
expect(StackFrame.fromStackString(asyncStackString), asyncStackFrames);
|
|
});
|
|
|
|
test('Parses stack without cols', () {
|
|
expect(StackFrame.fromStackString(stackFrameNoCols), stackFrameNoColsFrames);
|
|
});
|
|
|
|
test(
|
|
'Parses web stack',
|
|
// Wasm stacks are not reliable, even in debug mode, so the stack
|
|
// parser doesn't do the standard debug stack parsing this test is
|
|
// expecting here.
|
|
skip: kIsWasm, // [intended] See comments above
|
|
() {
|
|
expect(StackFrame.fromStackString(webStackTrace), webStackTraceFrames);
|
|
},
|
|
);
|
|
|
|
test('Parses ...', () {
|
|
expect(StackFrame.fromStackTraceLine('...'), StackFrame.stackOverFlowElision);
|
|
});
|
|
|
|
test('Live handling of Stack Overflows', () {
|
|
void overflow(int seed) {
|
|
overflow(seed + 1);
|
|
}
|
|
|
|
bool overflowed = false;
|
|
try {
|
|
overflow(1);
|
|
} on StackOverflowError catch (e, stack) {
|
|
overflowed = true;
|
|
final List<StackFrame> frames = StackFrame.fromStackTrace(stack);
|
|
expect(frames.contains(StackFrame.stackOverFlowElision), true);
|
|
}
|
|
expect(overflowed, true);
|
|
}, skip: isBrowser); // [intended] The VM test harness can handle a
|
|
// stack overflow, but the browser cannot - running this test in a browser
|
|
// will cause it to become unresponsive.
|
|
|
|
test('Traces from package:stack_trace throw assertion', () {
|
|
try {
|
|
StackFrame.fromStackString(mangledStackString);
|
|
assert(false, 'StackFrame.fromStackString did not throw on a mangled stack trace');
|
|
} catch (e) {
|
|
expect(e, isA<AssertionError>());
|
|
expect('$e', contains('Got a stack frame from package:stack_trace'));
|
|
}
|
|
});
|
|
|
|
test('Can parse web constructor invocation with unknown class name', () {
|
|
const String stackTraceLine =
|
|
'#32 new (http://localhost:42191/dart-sdk/lib/async/stream_controller.dart:880:9)';
|
|
expect(
|
|
StackFrame.fromStackTraceLine(stackTraceLine),
|
|
const StackFrame(
|
|
number: 32,
|
|
className: '<unknown>',
|
|
method: '',
|
|
packageScheme: 'http',
|
|
package: '<unknown>',
|
|
packagePath: 'dart-sdk/lib/async/stream_controller.dart',
|
|
line: 880,
|
|
column: 9,
|
|
source: stackTraceLine,
|
|
),
|
|
);
|
|
});
|
|
|
|
test('Parses to null for wrong format.', () {
|
|
expect(StackFrame.fromStackTraceLine('wrong stack trace format'), null);
|
|
});
|
|
}
|
|
|
|
const String stackString = '''
|
|
#0 _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:42:39)
|
|
#1 _AssertionError._throwNew (dart:core-patch/errors_patch.dart:38:5)
|
|
#2 new Text (package:flutter/src/widgets/text.dart:287:10)
|
|
#3 _MyHomePageState.build (package:hello_flutter/main.dart:72:16)
|
|
#4 StatefulElement.build (package:flutter/src/widgets/framework.dart:4414:27)
|
|
#5 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4303:15)
|
|
#6 Element.rebuild (package:flutter/src/widgets/framework.dart:4027:5)
|
|
#7 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4286:5)
|
|
#8 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4461:11)
|
|
#9 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4281:5)
|
|
#10 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3276:14)
|
|
#11 Element.updateChild (package:flutter/src/widgets/framework.dart)
|
|
#12 SingleChildRenderObjectElement.mount (package:flutter/blah.dart:999:9)
|
|
#13 main (package:hello_flutter/main.dart:10:4)''';
|
|
|
|
const List<StackFrame> stackFrames = <StackFrame>[
|
|
StackFrame(
|
|
number: 0,
|
|
className: '_AssertionError',
|
|
method: '_doThrowNew',
|
|
packageScheme: 'dart',
|
|
package: 'core-patch',
|
|
packagePath: 'errors_patch.dart',
|
|
line: 42,
|
|
column: 39,
|
|
source: '#0 _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:42:39)',
|
|
),
|
|
StackFrame(
|
|
number: 1,
|
|
className: '_AssertionError',
|
|
method: '_throwNew',
|
|
packageScheme: 'dart',
|
|
package: 'core-patch',
|
|
packagePath: 'errors_patch.dart',
|
|
line: 38,
|
|
column: 5,
|
|
source: '#1 _AssertionError._throwNew (dart:core-patch/errors_patch.dart:38:5)',
|
|
),
|
|
StackFrame(
|
|
number: 2,
|
|
className: 'Text',
|
|
method: '',
|
|
packageScheme: 'package',
|
|
package: 'flutter',
|
|
packagePath: 'src/widgets/text.dart',
|
|
line: 287,
|
|
column: 10,
|
|
isConstructor: true,
|
|
source: '#2 new Text (package:flutter/src/widgets/text.dart:287:10)',
|
|
),
|
|
StackFrame(
|
|
number: 3,
|
|
className: '_MyHomePageState',
|
|
method: 'build',
|
|
packageScheme: 'package',
|
|
package: 'hello_flutter',
|
|
packagePath: 'main.dart',
|
|
line: 72,
|
|
column: 16,
|
|
source: '#3 _MyHomePageState.build (package:hello_flutter/main.dart:72:16)',
|
|
),
|
|
StackFrame(
|
|
number: 4,
|
|
className: 'StatefulElement',
|
|
method: 'build',
|
|
packageScheme: 'package',
|
|
package: 'flutter',
|
|
packagePath: 'src/widgets/framework.dart',
|
|
line: 4414,
|
|
column: 27,
|
|
source: '#4 StatefulElement.build (package:flutter/src/widgets/framework.dart:4414:27)',
|
|
),
|
|
StackFrame(
|
|
number: 5,
|
|
className: 'ComponentElement',
|
|
method: 'performRebuild',
|
|
packageScheme: 'package',
|
|
package: 'flutter',
|
|
packagePath: 'src/widgets/framework.dart',
|
|
line: 4303,
|
|
column: 15,
|
|
source:
|
|
'#5 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4303:15)',
|
|
),
|
|
StackFrame(
|
|
number: 6,
|
|
className: 'Element',
|
|
method: 'rebuild',
|
|
packageScheme: 'package',
|
|
package: 'flutter',
|
|
packagePath: 'src/widgets/framework.dart',
|
|
line: 4027,
|
|
column: 5,
|
|
source: '#6 Element.rebuild (package:flutter/src/widgets/framework.dart:4027:5)',
|
|
),
|
|
StackFrame(
|
|
number: 7,
|
|
className: 'ComponentElement',
|
|
method: '_firstBuild',
|
|
packageScheme: 'package',
|
|
package: 'flutter',
|
|
packagePath: 'src/widgets/framework.dart',
|
|
line: 4286,
|
|
column: 5,
|
|
source:
|
|
'#7 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4286:5)',
|
|
),
|
|
StackFrame(
|
|
number: 8,
|
|
className: 'StatefulElement',
|
|
method: '_firstBuild',
|
|
packageScheme: 'package',
|
|
package: 'flutter',
|
|
packagePath: 'src/widgets/framework.dart',
|
|
line: 4461,
|
|
column: 11,
|
|
source:
|
|
'#8 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4461:11)',
|
|
),
|
|
StackFrame(
|
|
number: 9,
|
|
className: 'ComponentElement',
|
|
method: 'mount',
|
|
packageScheme: 'package',
|
|
package: 'flutter',
|
|
packagePath: 'src/widgets/framework.dart',
|
|
line: 4281,
|
|
column: 5,
|
|
source: '#9 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4281:5)',
|
|
),
|
|
StackFrame(
|
|
number: 10,
|
|
className: 'Element',
|
|
method: 'inflateWidget',
|
|
packageScheme: 'package',
|
|
package: 'flutter',
|
|
packagePath: 'src/widgets/framework.dart',
|
|
line: 3276,
|
|
column: 14,
|
|
source: '#10 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3276:14)',
|
|
),
|
|
StackFrame(
|
|
number: 11,
|
|
className: 'Element',
|
|
method: 'updateChild',
|
|
packageScheme: 'package',
|
|
package: 'flutter',
|
|
packagePath: 'src/widgets/framework.dart',
|
|
line: -1,
|
|
column: -1,
|
|
source: '#11 Element.updateChild (package:flutter/src/widgets/framework.dart)',
|
|
),
|
|
StackFrame(
|
|
number: 12,
|
|
className: 'SingleChildRenderObjectElement',
|
|
method: 'mount',
|
|
packageScheme: 'package',
|
|
package: 'flutter',
|
|
packagePath: 'blah.dart',
|
|
line: 999,
|
|
column: 9,
|
|
source: '#12 SingleChildRenderObjectElement.mount (package:flutter/blah.dart:999:9)',
|
|
),
|
|
StackFrame(
|
|
number: 13,
|
|
method: 'main',
|
|
packageScheme: 'package',
|
|
package: 'hello_flutter',
|
|
packagePath: 'main.dart',
|
|
line: 10,
|
|
column: 4,
|
|
source: '#13 main (package:hello_flutter/main.dart:10:4)',
|
|
),
|
|
];
|
|
|
|
const String asyncStackString = '''
|
|
#0 getSampleStack.<anonymous closure> (file:///path/to/flutter/packages/flutter/test/foundation/error_reporting_test.dart:40:57)
|
|
#1 new Future.sync (dart:async/future.dart:224:31)
|
|
#2 getSampleStack (file:///path/to/flutter/packages/flutter/test/foundation/error_reporting_test.dart:40:10)
|
|
#3 main (file:///path/to/flutter/packages/flutter/test/foundation/error_reporting_test.dart:46:40)
|
|
#4 main (package:flutter_goldens/flutter_goldens.dart:43:17)
|
|
<asynchronous suspension>
|
|
#5 main.<anonymous closure>.<anonymous closure> (file:///temp/path.whatever/listener.dart:47:18)
|
|
#6 _rootRun (dart:async/zone.dart:1126:13)
|
|
#7 _CustomZone.run (dart:async/zone.dart:1023:19)
|
|
#8 _runZoned (dart:async/zone.dart:1518:10)
|
|
#9 runZoned (dart:async/zone.dart:1465:12)
|
|
#10 Declarer.declare (package:test_api/src/backend/declarer.dart:130:22)
|
|
#11 RemoteListener.start.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/remote_listener.dart:124:26)
|
|
<asynchronous suspension>
|
|
#12 _rootRun (dart:async/zone.dart:1126:13)
|
|
#13 _CustomZone.run (dart:async/zone.dart:1023:19)
|
|
#14 _runZoned (dart:async/zone.dart:1518:10)
|
|
#15 runZoned (dart:async/zone.dart:1502:12)
|
|
#16 RemoteListener.start.<anonymous closure>.<anonymous closure> (package:test_api/src/remote_listener.dart:70:9)
|
|
#17 _rootRun (dart:async/zone.dart:1126:13)
|
|
#18 _CustomZone.run (dart:async/zone.dart:1023:19)
|
|
#19 _runZoned (dart:async/zone.dart:1518:10)
|
|
#20 runZoned (dart:async/zone.dart:1465:12)
|
|
#21 StackTraceFormatter.asCurrent (package:test_api/src/backend/stack_trace_formatter.dart:41:31)
|
|
#22 RemoteListener.start.<anonymous closure> (package:test_api/src/remote_listener.dart:69:29)
|
|
#23 _rootRun (dart:async/zone.dart:1126:13)
|
|
#24 _CustomZone.run (dart:async/zone.dart:1023:19)
|
|
#25 _runZoned (dart:async/zone.dart:1518:10)
|
|
#26 runZoned (dart:async/zone.dart:1465:12)
|
|
#27 SuiteChannelManager.asCurrent (package:test_api/src/suite_channel_manager.dart:34:31)
|
|
#28 RemoteListener.start (package:test_api/src/remote_listener.dart:68:27)
|
|
#29 serializeSuite (file:///temp/path.whatever/listener.dart:17:25)
|
|
#30 main (file:///temp/path.whatever/listener.dart:43:36)
|
|
#31 _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:239:25)
|
|
#32 _rootRun (dart:async/zone.dart:1126:13)
|
|
#33 _CustomZone.run (dart:async/zone.dart:1023:19)
|
|
#34 _runZoned (dart:async/zone.dart:1518:10)
|
|
#35 runZoned (dart:async/zone.dart:1502:12)
|
|
#36 _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:231:5)
|
|
#37 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:307:19)
|
|
#38 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174:12)''';
|
|
|
|
const String mangledStackString = r'''
|
|
dart:async/future_impl.dart 23:44 _Completer.completeError
|
|
test\bindings_async_gap_test.dart 42:17 main.<fn>.<fn>
|
|
package:flutter_test/src/binding.dart 744:19 TestWidgetsFlutterBinding._runTestBody
|
|
===== asynchronous gap ===========================
|
|
dart:async/zone.dart 1121:19 _CustomZone.registerUnaryCallback
|
|
dart:async-patch/async_patch.dart 83:23 _asyncThenWrapperHelper
|
|
dart:async/zone.dart 1222:13 _rootRunBinary
|
|
dart:async/zone.dart 1107:19 _CustomZone.runBinary
|
|
package:flutter_test/src/binding.dart 724:14 TestWidgetsFlutterBinding._runTest
|
|
package:flutter_test/src/binding.dart 1124:24 AutomatedTestWidgetsFlutterBinding.runTest.<fn>
|
|
package:fake_async/fake_async.dart 177:54 FakeAsync.run.<fn>.<fn>
|
|
dart:async/zone.dart 1190:13 _rootRun
|
|
''';
|
|
|
|
const List<StackFrame> asyncStackFrames = <StackFrame>[
|
|
StackFrame(
|
|
number: 0,
|
|
method: 'getSampleStack',
|
|
packageScheme: 'file',
|
|
package: '<unknown>',
|
|
packagePath: '/path/to/flutter/packages/flutter/test/foundation/error_reporting_test.dart',
|
|
line: 40,
|
|
column: 57,
|
|
source:
|
|
'#0 getSampleStack.<anonymous closure> (file:///path/to/flutter/packages/flutter/test/foundation/error_reporting_test.dart:40:57)',
|
|
),
|
|
StackFrame(
|
|
number: 1,
|
|
className: 'Future',
|
|
method: 'sync',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'future.dart',
|
|
line: 224,
|
|
column: 31,
|
|
isConstructor: true,
|
|
source: '#1 new Future.sync (dart:async/future.dart:224:31)',
|
|
),
|
|
StackFrame(
|
|
number: 2,
|
|
method: 'getSampleStack',
|
|
packageScheme: 'file',
|
|
package: '<unknown>',
|
|
packagePath: '/path/to/flutter/packages/flutter/test/foundation/error_reporting_test.dart',
|
|
line: 40,
|
|
column: 10,
|
|
source:
|
|
'#2 getSampleStack (file:///path/to/flutter/packages/flutter/test/foundation/error_reporting_test.dart:40:10)',
|
|
),
|
|
StackFrame(
|
|
number: 3,
|
|
method: 'main',
|
|
packageScheme: 'file',
|
|
package: '<unknown>',
|
|
packagePath: '/path/to/flutter/packages/flutter/foundation/error_reporting_test.dart',
|
|
line: 46,
|
|
column: 40,
|
|
source:
|
|
'#3 main (file:///path/to/flutter/packages/flutter/test/foundation/error_reporting_test.dart:46:40)',
|
|
),
|
|
StackFrame(
|
|
number: 4,
|
|
method: 'main',
|
|
packageScheme: 'package',
|
|
package: 'flutter_goldens',
|
|
packagePath: 'flutter_goldens.dart',
|
|
line: 43,
|
|
column: 17,
|
|
source: '#4 main (package:flutter_goldens/flutter_goldens.dart:43:17)',
|
|
),
|
|
StackFrame.asynchronousSuspension,
|
|
StackFrame(
|
|
number: 5,
|
|
method: 'main',
|
|
packageScheme: 'file',
|
|
package: '<unknown>',
|
|
packagePath: '/temp/path.whatever/listener.dart',
|
|
line: 47,
|
|
column: 18,
|
|
source:
|
|
'#5 main.<anonymous closure>.<anonymous closure> (file:///temp/path.whatever/listener.dart:47:18)',
|
|
),
|
|
StackFrame(
|
|
number: 6,
|
|
method: '_rootRun',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1126,
|
|
column: 13,
|
|
source: '#6 _rootRun (dart:async/zone.dart:1126:13)',
|
|
),
|
|
StackFrame(
|
|
number: 7,
|
|
className: '_CustomZone',
|
|
method: 'run',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1023,
|
|
column: 19,
|
|
source: '#7 _CustomZone.run (dart:async/zone.dart:1023:19)',
|
|
),
|
|
StackFrame(
|
|
number: 8,
|
|
method: '_runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1518,
|
|
column: 10,
|
|
source: '#8 _runZoned (dart:async/zone.dart:1518:10)',
|
|
),
|
|
StackFrame(
|
|
number: 9,
|
|
method: 'runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1465,
|
|
column: 12,
|
|
source: '#9 runZoned (dart:async/zone.dart:1465:12)',
|
|
),
|
|
StackFrame(
|
|
number: 10,
|
|
className: 'Declarer',
|
|
method: 'declare',
|
|
packageScheme: 'package',
|
|
package: 'test_api',
|
|
packagePath: 'src/backend/declarer.dart',
|
|
line: 130,
|
|
column: 22,
|
|
source: '#10 Declarer.declare (package:test_api/src/backend/declarer.dart:130:22)',
|
|
),
|
|
StackFrame(
|
|
number: 11,
|
|
className: 'RemoteListener',
|
|
method: 'start',
|
|
packageScheme: 'package',
|
|
package: 'test_api',
|
|
packagePath: 'src/remote_listener.dart',
|
|
line: 124,
|
|
column: 26,
|
|
source:
|
|
'#11 RemoteListener.start.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/remote_listener.dart:124:26)',
|
|
),
|
|
StackFrame.asynchronousSuspension,
|
|
StackFrame(
|
|
number: 12,
|
|
method: '_rootRun',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1126,
|
|
column: 13,
|
|
source: '#12 _rootRun (dart:async/zone.dart:1126:13)',
|
|
),
|
|
StackFrame(
|
|
number: 13,
|
|
className: '_CustomZone',
|
|
method: 'run',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1023,
|
|
column: 19,
|
|
source: '#13 _CustomZone.run (dart:async/zone.dart:1023:19)',
|
|
),
|
|
StackFrame(
|
|
number: 14,
|
|
method: '_runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1518,
|
|
column: 10,
|
|
source: '#14 _runZoned (dart:async/zone.dart:1518:10)',
|
|
),
|
|
StackFrame(
|
|
number: 15,
|
|
method: 'runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1502,
|
|
column: 12,
|
|
source: '#15 runZoned (dart:async/zone.dart:1502:12)',
|
|
),
|
|
StackFrame(
|
|
number: 16,
|
|
className: 'RemoteListener',
|
|
method: 'start',
|
|
packageScheme: 'package',
|
|
package: 'test_api',
|
|
packagePath: 'src/remote_listener.dart',
|
|
line: 70,
|
|
column: 9,
|
|
source:
|
|
'#16 RemoteListener.start.<anonymous closure>.<anonymous closure> (package:test_api/src/remote_listener.dart:70:9)',
|
|
),
|
|
StackFrame(
|
|
number: 17,
|
|
method: '_rootRun',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1126,
|
|
column: 13,
|
|
source: '#17 _rootRun (dart:async/zone.dart:1126:13)',
|
|
),
|
|
StackFrame(
|
|
number: 18,
|
|
className: '_CustomZone',
|
|
method: 'run',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1023,
|
|
column: 19,
|
|
source: '#18 _CustomZone.run (dart:async/zone.dart:1023:19)',
|
|
),
|
|
StackFrame(
|
|
number: 19,
|
|
method: '_runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1518,
|
|
column: 10,
|
|
source: '#19 _runZoned (dart:async/zone.dart:1518:10)',
|
|
),
|
|
StackFrame(
|
|
number: 20,
|
|
method: 'runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1465,
|
|
column: 12,
|
|
source: '#20 runZoned (dart:async/zone.dart:1465:12)',
|
|
),
|
|
StackFrame(
|
|
number: 21,
|
|
className: 'StackTraceFormatter',
|
|
method: 'asCurrent',
|
|
packageScheme: 'package',
|
|
package: 'test_api',
|
|
packagePath: 'src/backend/stack_trace_formatter.dart',
|
|
line: 41,
|
|
column: 31,
|
|
source:
|
|
'#21 StackTraceFormatter.asCurrent (package:test_api/src/backend/stack_trace_formatter.dart:41:31)',
|
|
),
|
|
StackFrame(
|
|
number: 22,
|
|
className: 'RemoteListener',
|
|
method: 'start',
|
|
packageScheme: 'package',
|
|
package: 'test_api',
|
|
packagePath: 'src/remote_listener.dart',
|
|
line: 69,
|
|
column: 29,
|
|
source:
|
|
'#22 RemoteListener.start.<anonymous closure> (package:test_api/src/remote_listener.dart:69:29)',
|
|
),
|
|
StackFrame(
|
|
number: 23,
|
|
method: '_rootRun',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1126,
|
|
column: 13,
|
|
source: '#23 _rootRun (dart:async/zone.dart:1126:13)',
|
|
),
|
|
StackFrame(
|
|
number: 24,
|
|
className: '_CustomZone',
|
|
method: 'run',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1023,
|
|
column: 19,
|
|
source: '#24 _CustomZone.run (dart:async/zone.dart:1023:19)',
|
|
),
|
|
StackFrame(
|
|
number: 25,
|
|
method: '_runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1518,
|
|
column: 10,
|
|
source: '#25 _runZoned (dart:async/zone.dart:1518:10)',
|
|
),
|
|
StackFrame(
|
|
number: 26,
|
|
method: 'runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1465,
|
|
column: 12,
|
|
source: '#26 runZoned (dart:async/zone.dart:1465:12)',
|
|
),
|
|
StackFrame(
|
|
number: 27,
|
|
className: 'SuiteChannelManager',
|
|
method: 'asCurrent',
|
|
packageScheme: 'package',
|
|
package: 'test_api',
|
|
packagePath: 'src/suite_channel_manager.dart',
|
|
line: 34,
|
|
column: 31,
|
|
source:
|
|
'#27 SuiteChannelManager.asCurrent (package:test_api/src/suite_channel_manager.dart:34:31)',
|
|
),
|
|
StackFrame(
|
|
number: 28,
|
|
className: 'RemoteListener',
|
|
method: 'start',
|
|
packageScheme: 'package',
|
|
package: 'test_api',
|
|
packagePath: 'src/remote_listener.dart',
|
|
line: 68,
|
|
column: 27,
|
|
source: '#28 RemoteListener.start (package:test_api/src/remote_listener.dart:68:27)',
|
|
),
|
|
StackFrame(
|
|
number: 29,
|
|
method: 'serializeSuite',
|
|
packageScheme: 'file',
|
|
package: '<unknown>',
|
|
packagePath: '/temp/path.whatever/listener.dart',
|
|
line: 17,
|
|
column: 25,
|
|
source: '#29 serializeSuite (file:///temp/path.whatever/listener.dart:17:25)',
|
|
),
|
|
StackFrame(
|
|
number: 30,
|
|
method: 'main',
|
|
packageScheme: 'file',
|
|
package: '<unknown>',
|
|
packagePath: '/temp/path.whatever/listener.dart',
|
|
line: 43,
|
|
column: 36,
|
|
source: '#30 main (file:///temp/path.whatever/listener.dart:43:36)',
|
|
),
|
|
StackFrame(
|
|
number: 31,
|
|
method: '_runMainZoned',
|
|
packageScheme: 'dart',
|
|
package: 'ui',
|
|
packagePath: 'hooks.dart',
|
|
line: 239,
|
|
column: 25,
|
|
source:
|
|
'#31 _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:239:25)',
|
|
),
|
|
StackFrame(
|
|
number: 32,
|
|
method: '_rootRun',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1126,
|
|
column: 13,
|
|
source: '#32 _rootRun (dart:async/zone.dart:1126:13)',
|
|
),
|
|
StackFrame(
|
|
number: 33,
|
|
className: '_CustomZone',
|
|
method: 'run',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1023,
|
|
column: 19,
|
|
source: '#33 _CustomZone.run (dart:async/zone.dart:1023:19)',
|
|
),
|
|
StackFrame(
|
|
number: 34,
|
|
method: '_runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1518,
|
|
column: 10,
|
|
source: '#34 _runZoned (dart:async/zone.dart:1518:10)',
|
|
),
|
|
StackFrame(
|
|
number: 35,
|
|
method: 'runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1502,
|
|
column: 12,
|
|
source: '#35 runZoned (dart:async/zone.dart:1502:12)',
|
|
),
|
|
StackFrame(
|
|
number: 36,
|
|
method: '_runMainZoned',
|
|
packageScheme: 'dart',
|
|
package: 'ui',
|
|
packagePath: 'hooks.dart',
|
|
line: 231,
|
|
column: 5,
|
|
source: '#36 _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:231:5)',
|
|
),
|
|
StackFrame(
|
|
number: 37,
|
|
method: '_startIsolate',
|
|
packageScheme: 'dart',
|
|
package: 'isolate-patch',
|
|
packagePath: 'isolate_patch.dart',
|
|
line: 307,
|
|
column: 19,
|
|
source:
|
|
'#37 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:307:19)',
|
|
),
|
|
StackFrame(
|
|
number: 38,
|
|
className: '_RawReceivePortImpl',
|
|
method: '_handleMessage',
|
|
packageScheme: 'dart',
|
|
package: 'isolate-patch',
|
|
packagePath: 'isolate_patch.dart',
|
|
line: 174,
|
|
column: 12,
|
|
source:
|
|
'#38 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174:12)',
|
|
),
|
|
];
|
|
|
|
const String stackFrameNoCols = '''
|
|
#0 blah (package:assertions/main.dart:4)
|
|
#1 main (package:assertions/main.dart:8)
|
|
#2 _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:239)
|
|
#3 _rootRun (dart:async/zone.dart:1126)
|
|
#4 _CustomZone.run (dart:async/zone.dart:1023)
|
|
#5 _runZoned (dart:async/zone.dart:1518)
|
|
#6 runZoned (dart:async/zone.dart:1502)
|
|
#7 _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:231)
|
|
#8 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:307)
|
|
#9 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174)''';
|
|
|
|
const List<StackFrame> stackFrameNoColsFrames = <StackFrame>[
|
|
StackFrame(
|
|
number: 0,
|
|
method: 'blah',
|
|
packageScheme: 'package',
|
|
package: 'assertions',
|
|
packagePath: 'main.dart',
|
|
line: 4,
|
|
column: -1,
|
|
source: '#0 blah (package:assertions/main.dart:4)',
|
|
),
|
|
StackFrame(
|
|
number: 1,
|
|
method: 'main',
|
|
packageScheme: 'package',
|
|
package: 'assertions',
|
|
packagePath: 'main.dart',
|
|
line: 8,
|
|
column: -1,
|
|
source: '#1 main (package:assertions/main.dart:8)',
|
|
),
|
|
StackFrame(
|
|
number: 2,
|
|
method: '_runMainZoned',
|
|
packageScheme: 'dart',
|
|
package: 'ui',
|
|
packagePath: 'hooks.dart',
|
|
line: 239,
|
|
column: -1,
|
|
source:
|
|
'#2 _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:239)',
|
|
),
|
|
StackFrame(
|
|
number: 3,
|
|
method: '_rootRun',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1126,
|
|
column: -1,
|
|
source: '#3 _rootRun (dart:async/zone.dart:1126)',
|
|
),
|
|
StackFrame(
|
|
number: 4,
|
|
className: '_CustomZone',
|
|
method: 'run',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1023,
|
|
column: -1,
|
|
source: '#4 _CustomZone.run (dart:async/zone.dart:1023)',
|
|
),
|
|
StackFrame(
|
|
number: 5,
|
|
method: '_runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1518,
|
|
column: -1,
|
|
source: '#5 _runZoned (dart:async/zone.dart:1518)',
|
|
),
|
|
StackFrame(
|
|
number: 6,
|
|
method: 'runZoned',
|
|
packageScheme: 'dart',
|
|
package: 'async',
|
|
packagePath: 'zone.dart',
|
|
line: 1502,
|
|
column: -1,
|
|
source: '#6 runZoned (dart:async/zone.dart:1502)',
|
|
),
|
|
StackFrame(
|
|
number: 7,
|
|
method: '_runMainZoned',
|
|
packageScheme: 'dart',
|
|
package: 'ui',
|
|
packagePath: 'hooks.dart',
|
|
line: 231,
|
|
column: -1,
|
|
source: '#7 _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:231)',
|
|
),
|
|
StackFrame(
|
|
number: 8,
|
|
method: '_startIsolate',
|
|
packageScheme: 'dart',
|
|
package: 'isolate-patch',
|
|
packagePath: 'isolate-patch.dart',
|
|
line: 307,
|
|
column: -1,
|
|
source: '#8 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:307)',
|
|
),
|
|
StackFrame(
|
|
number: 9,
|
|
className: '_RawReceivePortImpl',
|
|
method: '_handleMessage',
|
|
packageScheme: 'dart',
|
|
package: 'isolate-patch',
|
|
packagePath: 'isolate-patch.dart',
|
|
line: 174,
|
|
column: -1,
|
|
source:
|
|
'#9 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174)',
|
|
),
|
|
];
|
|
|
|
const String webStackTrace = r'''
|
|
package:dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 196:49 throw_
|
|
package:assertions/main.dart 4:3 blah
|
|
package:assertions/main.dart 8:5 main$
|
|
package:assertions/main_web_entrypoint.dart 9:3 main$
|
|
package:dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 47:50 onValue
|
|
package:dart-sdk/lib/async/zone.dart 1381:54 runUnary
|
|
object_test.dart 210:5 performLayout
|
|
package:dart-sdk/lib/async/future_impl.dart 140:18 handleValue
|
|
package:dart-sdk/lib/async/future_impl.dart 682:44 handleValueCallback
|
|
package:dart-sdk/lib/async/future_impl.dart 711:32 _propagateToListeners
|
|
package:dart-sdk/lib/async/future_impl.dart 391:9 callback
|
|
package:dart-sdk/lib/async/schedule_microtask.dart 43:11 _microtaskLoop
|
|
package:dart-sdk/lib/async/schedule_microtask.dart 52:5 _startMicrotaskLoop
|
|
package:dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 168:15 <fn>''';
|
|
|
|
const List<StackFrame> webStackTraceFrames = <StackFrame>[
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: 'throw_',
|
|
packageScheme: 'package',
|
|
package: 'dart-sdk',
|
|
packagePath: 'lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart',
|
|
line: 196,
|
|
column: 49,
|
|
source:
|
|
'package:dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 196:49 throw_',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: 'blah',
|
|
packageScheme: 'package',
|
|
package: 'assertions',
|
|
packagePath: 'main.dart',
|
|
line: 4,
|
|
column: 3,
|
|
source:
|
|
'package:assertions/main.dart 4:3 blah',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: r'main$',
|
|
packageScheme: 'package',
|
|
package: 'assertions',
|
|
packagePath: 'main.dart',
|
|
line: 8,
|
|
column: 5,
|
|
source:
|
|
r'package:assertions/main.dart 8:5 main$',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: r'main$',
|
|
packageScheme: 'package',
|
|
package: 'assertions',
|
|
packagePath: 'main_web_entrypoint.dart',
|
|
line: 9,
|
|
column: 3,
|
|
source:
|
|
r'package:assertions/main_web_entrypoint.dart 9:3 main$',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: 'onValue',
|
|
packageScheme: 'package',
|
|
package: 'dart-sdk',
|
|
packagePath: 'lib/_internal/js_dev_runtime/patch/async_patch.dart',
|
|
line: 47,
|
|
column: 50,
|
|
source:
|
|
'package:dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 47:50 onValue',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: 'runUnary',
|
|
packageScheme: 'package',
|
|
package: 'dart-sdk',
|
|
packagePath: 'lib/async/zone.dart',
|
|
line: 1381,
|
|
column: 54,
|
|
source:
|
|
'package:dart-sdk/lib/async/zone.dart 1381:54 runUnary',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: 'performLayout',
|
|
packageScheme: '<unknown>',
|
|
package: '<unknown>',
|
|
packagePath: '<unknown>',
|
|
line: 210,
|
|
column: 5,
|
|
source:
|
|
'object_test.dart 210:5 performLayout',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: 'handleValue',
|
|
packageScheme: 'package',
|
|
package: 'dart-sdk',
|
|
packagePath: 'lib/async/future_impl.dart',
|
|
line: 140,
|
|
column: 18,
|
|
source:
|
|
'package:dart-sdk/lib/async/future_impl.dart 140:18 handleValue',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: 'handleValueCallback',
|
|
packageScheme: 'package',
|
|
package: 'dart-sdk',
|
|
packagePath: 'lib/async/future_impl.dart',
|
|
line: 682,
|
|
column: 44,
|
|
source:
|
|
'package:dart-sdk/lib/async/future_impl.dart 682:44 handleValueCallback',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: '_propagateToListeners',
|
|
packageScheme: 'package',
|
|
package: 'dart-sdk',
|
|
packagePath: 'lib/async/future_impl.dart',
|
|
line: 711,
|
|
column: 32,
|
|
source:
|
|
'package:dart-sdk/lib/async/future_impl.dart 711:32 _propagateToListeners',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: 'callback',
|
|
packageScheme: 'package',
|
|
package: 'dart-sdk',
|
|
packagePath: 'lib/async/future_impl.dart',
|
|
line: 391,
|
|
column: 9,
|
|
source:
|
|
'package:dart-sdk/lib/async/future_impl.dart 391:9 callback',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: '_microtaskLoop',
|
|
packageScheme: 'package',
|
|
package: 'dart-sdk',
|
|
packagePath: 'lib/async/schedule_microtask.dart',
|
|
line: 43,
|
|
column: 11,
|
|
source:
|
|
'package:dart-sdk/lib/async/schedule_microtask.dart 43:11 _microtaskLoop',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: '_startMicrotaskLoop',
|
|
packageScheme: 'package',
|
|
package: 'dart-sdk',
|
|
packagePath: 'lib/async/schedule_microtask.dart',
|
|
line: 52,
|
|
column: 5,
|
|
source:
|
|
'package:dart-sdk/lib/async/schedule_microtask.dart 52:5 _startMicrotaskLoop',
|
|
),
|
|
StackFrame(
|
|
number: -1,
|
|
className: '<unknown>',
|
|
method: '<fn>',
|
|
packageScheme: 'package',
|
|
package: 'dart-sdk',
|
|
packagePath: 'lib/_internal/js_dev_runtime/patch/async_patch.dart',
|
|
line: 168,
|
|
column: 15,
|
|
source:
|
|
'package:dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 168:15 <fn>',
|
|
),
|
|
];
|