Implementation References
Notes
To learn about execution order, you can add print() statements to the Flutter tool at desired
locations. To get those print() statements to run, you'll need to trigger a rebuild of the Flutter
tool. To do that, delete the file at [my_flutter_sdk]/bin/cache/flutter_tools.snapshot. The next
time a flutter command is executed, it will rebuild the tool from source, and include your
print() statements.
Key Stack Traces
Some stack traces that show execution path.
Execution from test command launch:
This captures the start of execution, and also captures the handoff point from the
flutter_tools package to the test_core package.
executable.dart - main()
StackTrace:
#0 main (package:test_core/src/executable.dart:39:36)
#1 _DefaultTestWrapper.main (package:flutter_tools/src/test/test_wrapper.dart:31:16)
#2 FlutterTestRunner.runTests (package:flutter_tools/src/test/runner.dart:179:25)
#3 TestCommand.runCommand (package:flutter_tools/src/commands/test.dart:664:33)
<asynchronous suspension>
#4 FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1558:27)
<asynchronous suspension>
#5 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:154:19)
<asynchronous suspension>
#6 CommandRunner.runCommand (package:args/command_runner.dart:212:13)
<asynchronous suspension>
#7 FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:496:9)
<asynchronous suspension>
#8 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:154:19)
<asynchronous suspension>
#9 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:431:5)
<asynchronous suspension>
#10 run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:98:11)
<asynchronous suspension>
#11 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:154:19)
<asynchronous suspension>
#12 main (package:flutter_tools/executable.dart:99:3)
<asynchronous suspension>
test_core run():
Runner.run()
_loadSuites()
loadFile() - path: /Users/admin/Projects/flutter_test_goldens/test_goldens/flutter/failing_test.dart
LoadSuite() - name: loading /Users/admin/Projects/flutter_test_goldens/test_goldens/flutter/failing_test.dart, path: /Users/admin/Projects/flutter_test_goldens/test_goldens/flutter/failing_test.dart
StackTrace:
#0 new LoadSuite (package:test_core/src/runner/load_suite.dart:88:78)
#1 Loader.loadFile (package:test_core/src/runner/loader.dart:208:15)
<asynchronous suspension>
#2 _StreamController.add (dart:async/stream_controller.dart:616:3)
<asynchronous suspension>
#3 _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:183:3)
<asynchronous suspension>
Generate the code that bootstraps the test:
The test_core package hands control back to flutter_tools to bootstrap a test.
Generate test bootstrap:
#0 generateTestBootstrap (package:flutter_tools/src/test/flutter_platform.dart:155:49)
#1 FlutterPlatform._generateTestMain (package:flutter_tools/src/test/flutter_platform.dart:813:12)
#2 FlutterPlatform._createListenerDart (package:flutter_tools/src/test/flutter_platform.dart:798:7)
#3 FlutterPlatform._startTest (package:flutter_tools/src/test/flutter_platform.dart:651:20)
#4 FlutterPlatform.loadChannel (package:flutter_tools/src/test/flutter_platform.dart:443:36)
#5 FlutterPlatform.load (package:flutter_tools/src/test/flutter_platform.dart:395:44)
#6 Loader.loadFile.<anonymous closure> (package:test_core/src/runner/loader.dart:216:40)
<asynchronous suspension>
#7 new LoadSuite.<anonymous closure>.<anonymous closure> (package:test_core/src/runner/load_suite.dart:98:19)
<asynchronous suspension>