mirror of
https://github.com/flutter/flutter.git
synced 2026-02-13 14:21:39 +08:00
50 lines
1.8 KiB
Markdown
50 lines
1.8 KiB
Markdown
# Private Test Runner
|
|
|
|
These are tests of private interfaces that can't easily happen in the regular
|
|
flutter tests due to problems with test and implementation interdependence.
|
|
|
|
This gets around the problem of parts existing in more than one library by
|
|
making a copy of the code under test.
|
|
|
|
The test script `bin/test_private.dart` tests private interfaces by copying the
|
|
code under test into a temporary workspace. The test is then free to make the
|
|
copied flutter source into a "part" of its own library by declaring a library
|
|
and using the `part` directive with a relative path to include the parts. This
|
|
way the test and the private interface are part of the same library, and the
|
|
private interface can be accessed by the test.
|
|
|
|
The tests are run like so:
|
|
|
|
```shell
|
|
dart run bin/test_private.dart
|
|
```
|
|
|
|
One limitation is that the copied private API needs to be separable enough to be
|
|
copied, so it needs to be in its own separate files.
|
|
|
|
To add a private test, add a manifest file of the form (assuming
|
|
"my_private_test" is the name of the test) to the [test](test) subdir:
|
|
|
|
```json
|
|
{
|
|
"tests": [
|
|
"my_private_test.dart"
|
|
],
|
|
"pubspec": "my_private_test.pubspec.yaml",
|
|
"deps": [
|
|
"lib/src/subpackage/my_private_implementation.dart",
|
|
]
|
|
}
|
|
```
|
|
|
|
It will copy the files in `deps` relative to the `packages/flutter` directory
|
|
into a similar relative path structure in the test temporary directory tree. It
|
|
will copy the `pubspec` file into `pubspec.yaml` in the test temporary
|
|
directory, and copy all of the `tests` into the top of the test temporary
|
|
directory tree.
|
|
|
|
Each test gets its own temporary directory tree under a generated temporary
|
|
directory in the system temp dir that is removed at the end of the run, or under
|
|
the path given to `--temp-dir` on the command line. If a temporary directory is
|
|
given explicitly, it will not be deleted at the end of the run.
|