blob: 1659a64bf5399f666f042ec717c497d1535a585c [file] [log] [blame]
// 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);
}
var 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 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>',
),
];