mirror of
https://github.com/flutter/flutter
synced 2024-10-13 11:42:54 +00:00
95 lines
3 KiB
Markdown
95 lines
3 KiB
Markdown
# Flutter Tools
|
|
|
|
This section of the Flutter repository contains the command line developer tools
|
|
for building Flutter applications.
|
|
|
|
## Working on Flutter Tools
|
|
|
|
Be sure to follow the instructions on [CONTRIBUTING.md](../../CONTRIBUTING.md)
|
|
to set up your development environment. Further, familiarize yourself with the
|
|
[style guide](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo),
|
|
which we follow.
|
|
|
|
### Setting up
|
|
|
|
First, ensure that the Dart SDK and other necessary artifacts are available by
|
|
invoking the Flutter Tools wrapper script. In this directory run:
|
|
```shell
|
|
$ flutter --version
|
|
```
|
|
|
|
### Running the Tool
|
|
|
|
To run Flutter Tools from source, in this directory run:
|
|
```shell
|
|
$ dart bin/flutter_tools.dart
|
|
```
|
|
followed by command-line arguments, as usual.
|
|
|
|
|
|
### Running the analyzer
|
|
|
|
To run the analyzer on Flutter Tools, in this directory run:
|
|
```shell
|
|
$ flutter analyze
|
|
```
|
|
|
|
### Writing tests
|
|
|
|
As with other parts of the Flutter repository, all changes in behavior [must be
|
|
tested](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#write-test-find-bug).
|
|
Tests live under the `test/` subdirectory.
|
|
- Hermetic unit tests of tool internals go under `test/general.shard`.
|
|
- Tests of tool commands go under `test/commands.shard`. Hermetic tests go under
|
|
its `hermetic/` subdirectory. Non-hermetic tests go under its `permeable`
|
|
sub-directory.
|
|
- Integration tests (e.g. tests that run the tool in a subprocess) go under
|
|
`test/integration.shard`.
|
|
|
|
In general, the tests for the code in a file called `file.dart` should go in a
|
|
file called `file_test.dart` in the subdirectory that matches the behavior of
|
|
the test.
|
|
|
|
#### Using local engine builds in integration tests
|
|
|
|
The integration tests can be configured to use a specific local engine
|
|
variant by setting the `FLUTTER_LOCAL_ENGINE` environment variable to the
|
|
name of the local engine (e.g. "android_debug_unopt"). If the local engine build
|
|
requires a source path, this can be provided by setting the `FLUTTER_LOCAL_ENGINE_SRC_PATH`
|
|
environment variable. This second variable is not necessary if the `flutter` and
|
|
`engine` checkouts are in adjacent directories.
|
|
|
|
```shell
|
|
export FLUTTER_LOCAL_ENGINE=android_debug_unopt
|
|
flutter test test/integration.shard/some_test_case
|
|
```
|
|
|
|
### Running the tests
|
|
|
|
To run the tests in the `test/` directory:
|
|
|
|
```shell
|
|
$ flutter test
|
|
```
|
|
|
|
The tests in `test/integration.shard` are slower to run than the tests in
|
|
`test/general.shard`. They also require the `FLUTTER_ROOT` environment variable
|
|
to be set and pointing to the root of the Flutter SDK. To run only the tests in `test/general.shard`, in this
|
|
directory run:
|
|
```shell
|
|
$ flutter test test/general.shard
|
|
```
|
|
|
|
To run the tests in a specific file, run:
|
|
```shell
|
|
$ flutter test test/general.shard/utils_test.dart
|
|
```
|
|
|
|
### Forcing snapshot regeneration
|
|
|
|
To force the Flutter Tools snapshot to be regenerated, delete the following
|
|
files:
|
|
```shell
|
|
$ rm ../../bin/cache/flutter_tools.stamp ../../bin/cache/flutter_tools.snapshot
|
|
```
|