* Allow for application-specific log readers.
When running with prebuilt application binaries, those applications
aren't guaranteed to be named "Runner" (as it is when we build
the app locally in Flutter tools)
* Remove the workaround that pinned args to v0.13.6
This reverts most of the changes in commit 6331b6c8b5
* throw exception if exit code is not an integer
* rework command infrastructure to throw ToolExit when non-zero exitCode
* convert commands to return Future<Null>
* cleanup remaining commands to use throwToolExit for non-zero exit code
* remove isUnusual exception message
* add type annotations for updated args package
* convert pubGet to throw ToolExit on non-zero exit code
* convert commandValidator to throw ToolExit for non-zero exit code
* convert flutter commands to throw ToolExit for non-zero exit code
* use convenience method throwToolExit
* only show "if this problem persists" for unusual exceptions
* refactor _run to runCmd
* replace requiresProjectRoot getter with call to commandValidator
* replace requiresDevice getter with call to findTargetDevice
* trace command requires a debug connection, not a device
* inline androidOnly getter
* rename command methods to verifyTheRunCmd and runCmd
* move common verification into BuildSubCommand
* rename deviceForCommand to device
* rename methods to verifyThenRunCommand and runCommand
This prevents multiple simultaneous runs of the analyzer from stomping
over each other (e.g. multiple runs of 'update-packages'). Certain
long-lived commands (like analyze, run, logs) are exempted once they've
done enough work to be safe from most stomping action.
This still doesn't make us entirely safe from craziness, e.g. if you're
half way through an 'update-packages' run and you call 'git pull', who
knows what state you'll end up in. But there's only so much one can do.
Fixes https://github.com/flutter/flutter/issues/2762
* refactor the --resident run option into a separate file
* update daemon to run --resident apps
* re-plumbing daemon start
* send app logs
* update tests
* review changes
* fix test runner
* remove PackageMap.createGlobalInstance; rely on the ctor
* review comments
This also fixes some related problems affecting "flutter run":
* FLXes built during AndroidDevice.startApp need to match the build mode
* APKs should always be rebuilt if the build mode uses AOT compilation
* rename service_protocol.dart to protocol_discovery.dart
* add a wrapper around the obs. protocol
* use json-rpc in run
* consolidate obs. code; implement flutter run --benchmark
* review comments
Host tools can be found in the artifact cache directory for the host platform.
If a developer wants to use a local engine build instead, then provide an
--engine-build flag that selects the specific engine build variant.
When @jason-simons added the diagnostic server on Android this
happened to conflict with flutter drive's usage of 8182.
We really should fix both of these port users to be dynamic
but this fixes https://github.com/flutter/flutter/issues/3291
for now.
@yjbanov
* add a --deploy flag to build apk
* update command description
* use an enum instead of a bool param for build variants
* rename buildForDeploy flag to buildVariant
* review comments
The way we pick observatory port # has changed and we have broken
logic that handles port 8181. To fix the buildbot, switch to port
8182. We can later figure out what we want to do when we clean up
port handling.
The old VM extention for extracting the timeline data is gone.
Switch to the new '_getVMTimeline' API.
Well, all the easy ones, anyway.
For some reason `// ignore:` isn't working for me so I've disabled
lints that need that. Also disabled those that require a ton of work
(which I'm doing, but not in this PR, to keep it reviewable).
This adds:
- avoid_init_to_null
- library_names
- package_api_docs
- package_names
- package_prefixed_library_names
- prefer_is_not_empty
- sort_constructors_first
- sort_unnamed_constructors_first
- unnecessary_getters_setters
flutter start's method of finding devices to run the app on is not suitable for flutter drive.
This commit also refactors several tool services to allow mocking in unit tests.
"flutter create" adds option `--with-driver-test` that adds
dependencies to `flutter_driver` in `pubspec.yaml` and creates
a basic driver test runnable via `flutter drive
--target=test_driver/e2e.dart`
"flutter drive" new options:
- `--keep-app-running` tells the driver to not stop the app after tests
are done
- `--use-existing-app` tells the driver to not start a new app but use
an already running instance
Runs a test app and a driver test simultaneously, then stops the app.
Usage:
```
flutter drive --target=/path/to/test/app.dart
```
This command will look for `/path/to/test/app_test.dart` by
convention. We will expand into other ways of discovering tests in the
future.