This change was dropped out of #26227 because it seems to inexplicably result in timeouts talking to the VM service on Windows Cirrus. After 1 month of periodically debugging it, it just started passing 🤷♂️.
These are essentially self-inflicted race conditions. Instead of timeouts we're going to try a more verbose logging mechanism that points out when things are taking a long time.
* Fix `flutter test`e xpression eval tests
We weren't passing `beforeStart` through so the breakpoints were never being set, which means the evaluations were happening while the code was running.
* Ensure we wait for breakpoints before trying to evaluate
* Remove many timeouts.
These are essentially self-inflicted race conditions. Instead of timeouts we're going to try a more verbose logging mechanism that points out when things are taking a long time.
* Get the attach tests to pass.
* Apply review comments from Todd
* More review comment fixes
* Put back the extended timeouts here now that I know why we have them...
* Move integration tests to use vm_service_lib
* Turn off debug logging that was accidentally committed
* Run update-packages --force to fix checksum for new dev dependency
* Trim trailing whitespace
* Switch to URIs for breakpoints and unskip tests on Windows
addBreakpointWithScriptUri expects Uris. By coincidence, FS paths work on Mac/Linux but they fail on Windows. One of the issues in the skip comment is fixed, the other one seems not relevant here.
* Apply symlink resolution to all integration tests
The default temp folders we get include symlinks which breaks breakpoints.
* Save 🙄
* Fix typo
aed6b8c46 Roll Dart to ac6d4f7e653deba11d4836768376537893a9e9d6. (#6549)
3ba6270b2 Roll src/third_party/skia 921ec976556c..4b7b2ceb4ad9 (14 commits) (#6550)
* Change file paths to URIs to fix "Could not run configuration in engine" on Windows
Plus unskip test that was failing due to this.
Fixes#21348.
* Remove unused import
I'm working on fixing up all tests that rely on fs.currentDirectory to allow us to run concurrently. This one proved to be really tricky because it calls a lot of code and spawns multiple processes that have a mix of absolute and relative paths passed to them. I managed to handle some of it with a ChrootFileSystem, but the paths passed to the external processes were wrong.
The functionality here is covered by all of the integration tests that use flutter_tester that were added after this, including flutter_run_test.dart, lifetime_test.dart etc. in this same folder but because they're run through `flutter run` as a separate process they get to set their own working directories without affecting other tests if run concurrently.
* Add a detach command to detach without terminating (#21376)
* Add a detach command to detach without terminating
Fixes#21154.
* Bump protocol version for app.detach
* Tweak to detach/quit text
* Change logPrefix to named param
* Fix the text that the devicelab attach test looks for
* Rename test file
* Fix detection to work regardless of whether there are other devices
On Windows we get one message, but on Mac we get another (because of the Simulator always being available).
* Allow FlutterTester to be provided with the working directory for execution
Previously this test set fs.currentDirectory which prevents running tests concurrently. This allows setting the working directory for a FlutterTester in the cosntructor (optionally) and passes it through from the test (without setting fs.currentDirectory).
* Remove trailing whitespace
* Add a detach command to detach without terminating
Fixes#21154.
* Bump protocol version for app.detach
* Tweak to detach/quit text
* Change logPrefix to named param
* Unskip integration tests on Windows that now pass
The referenced issue is closed and these tests pass for me locally on Windows now.
* Remove import that's no longer used
* Add another issue that is afffecting these tests on Windows
* Add a hot restart test and mark skip on Windows
Skipped due to https://github.com/flutter/flutter/issues/21348.
This is a bit of a stab in the dark for a flake sometimes seen on bots (but I can't repro locally) #20822. Detaching from a Flutter app currently seems to terminate it, so it may be the cause of the "app not found" when trying to stop the app subsequently.
This change means we stop the app from the main process first, before terminating the attach process.
* Don't time out if process terminates when told to stop but response was not processed
While trying to reproduce #20822 I found a condition where the app may quit before the `app.stop` response is received but this code (which is called in integration test teardown) would sit around waiting and time out. With this change, the process exit is considered a valid response to the stop request.
* Add process exit to log for better errors in failures
This log can be turned on for debugging but is also dumped when a test fails (in certain conditions). With this in the log, it'll be clear if the timeout is because we're waiting for an event but the process quit.
This test is sometimes flaky (#20822) because the two processes try to stop the same app. This fix changes to just gracefully terminate the attach process without explicitly trying to stop and then uses the original spawning process to stop the app.
I can't repro the flake locally to be certain, but I've verified only one stop command is sent now so it *should* be good.
* Don't keep parsing results once we've had the event we expected
* Report errors if an app.stop event is received while waiting for another event
* Don't throw if we see app.stop event when we've just sent an app.stop request
* Improve debug print to include --start-paused if being used
* Improve wrapping