mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00

Converts the `dependency_version_checker.kts` script to a Kotlin source class. Also adds unit tests that depend heavily on mocking, because from what I can tell you can't create an instance of a Gradle `org.gradle.api.Project` for testing (so I can't pass a real `Project` to `DependencyVersionChecker.checkDependencyVersions()`). Perhaps functionality for unit testing will come in the future: https://docs.gradle.org/current/userguide/test_kit.html > At this time, it is focused on functional testing. That is, testing build logic by exercising it as part of a programmatically executed build. Over time, the TestKit will likely expand to facilitate other kinds of tests. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md --------- Co-authored-by: Gray Mackall <mackall@google.com> Co-authored-by: Reid Baker <hamilton.reid.baker@gmail.com>
40 lines
2.3 KiB
Markdown
40 lines
2.3 KiB
Markdown
## The Flutter Gradle Plugin
|
|
|
|
This directory contains Gradle code used to by the Flutter tool to build Flutter apps for Android,
|
|
primarily the Flutter Gradle Plugin (FGP) - a Gradle plugin built on top of Gradle and the Android
|
|
Gradle Plugin (AGP).
|
|
|
|
### Editing in Android Studio
|
|
|
|
To get code completion in Android Studio, you must open a new Android Studio window with this
|
|
directory as the root. Code completion will not work when navigating to files
|
|
in an Android Studio window opened at the root of the entire Flutter repo.
|
|
|
|
### Contributing
|
|
|
|
The Flutter Gradle Plugin is [currently being re-written](https://github.com/flutter/flutter/issues/121541) from Groovy to Kotlin
|
|
(Kotlin source specifically, i.e. not `.kts`). As such, outside of critical bug fixes,
|
|
new contributions will only be accepted in `src/main/kotlin` (and `src/test/kotlin`).
|
|
|
|
### Testing
|
|
|
|
To run the tests from the CLI, you first need to download the Gradle wrapper.
|
|
1. Ensure you have run gclient sync recently (i.e., from the root of your framework checkout, run `gclient sync -D`).
|
|
2. From this directory, run `../../../engine/src/flutter/third_party/gradle/bin/gradle wrapper`.
|
|
|
|
Tests can be run in Android Studio, or directly with Gradle: `./gradlew test`
|
|
(note that this directory does not contain a version controlled Gradle file. You can find one in
|
|
the engines `third_party` directory at
|
|
`<flutter_root>/engine/src/flutter/third_party/gradle/bin/gradle`).
|
|
|
|
Alternatively, you can run all the tests in one file by passing in the fully qualified class name,
|
|
e.g. `./gradlew test --tests com.flutter.gradle.BaseApplicationNameHandlerTest`, or one test in
|
|
one file by passing in the fully qualified class name followed by the method name,
|
|
e.g `./gradlew test --tests "com.flutter.gradle.BaseApplicationNameHandlerTest.setBaseName respects Flutter tool property"`.
|
|
|
|
Sometimes changing a test name and then running it will cause an IDE error. To get Android Studio back
|
|
to a good state on Mac, run `Help > "Repair IDE"`, and then in the popup window `"Rescan project indexes > Everything works now."`
|
|
|
|
To add a new test, add a class under `src/test/kotlin`, with methods annotated with `@Test`.
|
|
These tests will get automatically run on CI by `packages/flutter_tools/test/integration.shard/android_run_flutter_gradle_plugin_tests_test.dart`.
|