Update links to the flutter/engine repository for the monorepo. (#164328)

Just general cleanup while working on other things.
This commit is contained in:
Matan Lurey 2025-02-27 13:57:59 -08:00 committed by GitHub
parent c9c3e74747
commit fe6c05b778
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 39 additions and 56 deletions

View File

@ -1,12 +1,5 @@
# Flutter Engine # Flutter Engine
[![Flutter CI Status](https://flutter-dashboard.appspot.com/api/public/build-status-badge?repo=engine)](https://flutter-dashboard.appspot.com/#/build?repo=engine)
Flutter is Google's SDK for crafting beautiful, fast user experiences for
mobile, web, and desktop from a single codebase. Flutter works with existing
code, is used by developers and organizations around the world, and is free
and open source.
The Flutter Engine is a portable runtime for hosting The Flutter Engine is a portable runtime for hosting
[Flutter](https://flutter.dev) applications. It implements Flutter's core [Flutter](https://flutter.dev) applications. It implements Flutter's core
libraries, including animation and graphics, file and network I/O, libraries, including animation and graphics, file and network I/O,
@ -15,16 +8,11 @@ toolchain. Most developers will interact with Flutter via the [Flutter
Framework](https://github.com/flutter/flutter), which provides a modern, Framework](https://github.com/flutter/flutter), which provides a modern,
reactive framework, and a rich set of platform, layout and foundation widgets. reactive framework, and a rich set of platform, layout and foundation widgets.
If you want to run/contribute to Flutter Web engine, more tooling can be More tooling is available to make development experiences easier:
found at [felt](lib/web_ui/README.md#using-felt).
This is a tool written to make web engine development experience easy.
If you are new to Flutter, then you will find more general information | Target | Tool |
on the Flutter project, including tutorials and samples, on our Web | ----------------- | ----------------------------------------------- |
site at [Flutter.dev](https://flutter.dev). For specific information | Web | [`felt`](lib/web_ui/README.md#using-felt) |
about Flutter's APIs, consider our API reference which can be found at | Mobile or Desktop | [`et`](tools/engine_tool/README.md#engine-tool) |
the [docs.flutter.dev](https://docs.flutter.dev/).
Flutter is a fully open source project, and we welcome contributions. To learn about running tests, see [testing the engine](docs/testing/Testing-the-engine.md).
Information on how to get started can be found at our
[contributor guide](CONTRIBUTING.md).

View File

@ -1,16 +1,13 @@
## Testing the engine # Testing the engine
Pull requests submitted to the [engine repository](https://github.com/flutter/engine)
should be tested to prevent functional regressions.
This guide describes how to write and run various types of tests in the engine. This guide describes how to write and run various types of tests in the engine.
## C++ - core engine ## C++ - core engine
If you edit `.cc` files in https://github.com/flutter/engine/tree/main, If you edit `.cc` files in [`engine`](../../),
you're working on the core, portable Flutter engine. you're working on the core, portable Flutter engine.
### Unit tests ### Unit tests (C++)
C++ unit tests are co-located with their header and source files. For instance, C++ unit tests are co-located with their header and source files. For instance,
`fml/file.h` and `fml/file.cc` have a `fml/file_unittest.cc` in the same `fml/file.h` and `fml/file.cc` have a `fml/file_unittest.cc` in the same
@ -25,7 +22,7 @@ folder.
You can run the C++ unit tests with: You can run the C++ unit tests with:
``` ```sh
testing/run_tests.py --type=engine testing/run_tests.py --type=engine
``` ```
@ -33,7 +30,7 @@ from the `flutter` directory, after building the engine variant to test
(by default `host_debug_unopt`). To use a different variant (e.g. if you use (by default `host_debug_unopt`). To use a different variant (e.g. if you use
an Apple Silicon Mac), run: an Apple Silicon Mac), run:
``` ```sh
testing/run_tests.py --type=engine --variant=host_debug_unopt_arm64 testing/run_tests.py --type=engine --variant=host_debug_unopt_arm64
``` ```
@ -57,7 +54,7 @@ mocks for all other dependencies.
## Java - Android embedding ## Java - Android embedding
If you edit `.java` files in the https://github.com/flutter/engine/tree/main/shell/platform/android If you edit `.java` files in the [`shell/platform/android`](../../shell/platform/android/)
directory, you're working on the Android embedding which connects the core C++ directory, you're working on the Android embedding which connects the core C++
engine to the Android SDK APIs and runtime. engine to the Android SDK APIs and runtime.
@ -65,9 +62,9 @@ engine to the Android SDK APIs and runtime.
For testing logic within a class at a unit level, create or add to a JUnit test. For testing logic within a class at a unit level, create or add to a JUnit test.
Existing Java unit tests are located at https://github.com/flutter/engine/tree/main/shell/platform/android/test Existing Java unit tests are located at [`shell/platform/android/test`](../../shell/platform/android/test)
and follow the Java package directory structure. Files in the `shell/platform/android/io/flutter/` and follow the Java package directory structure. Files in the [`shell/platform/android/io/flutter/`](../../shell/platform/android/io/flutter/)
package tree can have a parallel file in the `shell/platform/android/test/io/flutter/` package tree can have a parallel file in the [`shell/platform/android/test/io/flutter/`](../../shell/platform/android/test/io/flutter/)
package tree. Files in matching directories are considered [package visible](https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html) package tree. Files in matching directories are considered [package visible](https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)
as is the case in standard Java. as is the case in standard Java.
@ -75,7 +72,7 @@ When editing production files in `shell/platform/android/io/flutter/`,
the easiest step to add tests is to look for a matching `...Test.java` file in the easiest step to add tests is to look for a matching `...Test.java` file in
`shell/platform/android/test/io/flutter/`. `shell/platform/android/test/io/flutter/`.
See the [Java unit test README](https://github.com/flutter/engine/blob/main/shell/platform/android/test/README.md) See the [Java unit test README](../../shell/platform/android/test/README.md)
for details. for details.
The engine repo has a unified build system to build C, C++, Objective-C, The engine repo has a unified build system to build C, C++, Objective-C,
@ -87,7 +84,7 @@ standard Android project.
Instead, the engine provides the script: Instead, the engine provides the script:
``` ```sh
testing/run_tests.py --type=java testing/run_tests.py --type=java
``` ```
@ -159,7 +156,7 @@ in the root of the monorepo. See
## Objective-C - iOS embedding ## Objective-C - iOS embedding
If you edit `.h` or `.mm` files in the https://github.com/flutter/engine/tree/main/shell/platform/darwin/ios If you edit `.h` or `.mm` files in the [`shell/platform/darwin/ios`](../../shell/platform/darwin/ios)
directory, you're working on the iOS embedding which connects the core C++ directory, you're working on the iOS embedding which connects the core C++
engine to the iOS SDK APIs and runtime. engine to the iOS SDK APIs and runtime.
@ -168,23 +165,22 @@ engine to the iOS SDK APIs and runtime.
For testing logic within a class in isolation, create or add to a XCTestCase. For testing logic within a class in isolation, create or add to a XCTestCase.
The iOS unit testing infrastructure is split in 2 different locations. The The iOS unit testing infrastructure is split in 2 different locations. The
`...Test.mm` files in https://github.com/flutter/engine/tree/main/shell/platform/darwin/ios `...Test.mm` files in [`shell/platform/darwin/ios`](../../shell/platform/darwin/ios)
contain the unit tests themselves. The contain the unit tests themselves. The [`testing/ios/IosUnitTests`](../../testing/ios/IosUnitTests/)
https://github.com/flutter/engine/tree/main/testing/ios/IosUnitTests directory directory contains an Xcode container project to execute the test.
contains an Xcode container project to execute the test.
See the [iOS unit test README](https://github.com/flutter/engine/blob/main/testing/ios/IosUnitTests/README.md) See [`testing/ios/IosUnitTests/README.md`](../../testing/ios/IosUnitTests/README.md)
for details on adding new test files. for details on adding new test files.
The engine repo has a unified build system to build C, C++, Objective-C, The engine repo has a unified build system to build C, C++, Objective-C,
Objective-C++, and Java files using [GN](https://gn.googlesource.com/gn/) and Objective-C++, and Java files using [GN](https://gn.googlesource.com/gn/) and
[Ninja](https://ninja-build.org/). Since GN and Ninja has to build the C++ [Ninja](https://ninja-build.org/). Since GN and Ninja has to build the C++
dependencies that the Objective-C classes reference, the tests aren't built by dependencies that the Objective-C classes reference, the tests aren't built by
the Xcode project in https://github.com/flutter/engine/tree/main/testing/ios/IosUnitTests. the Xcode project in [`testing/ios/IosUnitTests`](../../testing/ios/IosUnitTests/).
Instead, the engine provides the script: Instead, the engine provides the script:
``` ```sh
testing/run_tests.py --type=objc testing/run_tests.py --type=objc
``` ```
@ -231,14 +227,13 @@ mock all other dependencies with OCMock.
The OCMock library is available as a test dependency when writing XCTests for The OCMock library is available as a test dependency when writing XCTests for
the engine. the engine.
### End-to-end tests ### End-to-end tests (iOS Embedder)
End-to-end tests exercise the entire iOS embedding with the C++ engine on End-to-end tests exercise the entire iOS embedding with the C++ engine on
a headless iOS simulator. It's an integration test ensuring that a headless iOS simulator. It's an integration test ensuring that
the engine as a whole on iOS is functioning correctly. the engine as a whole on iOS is functioning correctly.
The project containing the iOS end-to-end engine test is at The project containing the iOS end-to-end engine test is at [`testing/ios_scenario_app/ios`](../../testing/ios_scenario_app/ios/).
https://github.com/flutter/engine/tree/main/testing/ios_scenario_app/ios.
This test project is build similarly to a normal debug Flutter app. The Dart This test project is build similarly to a normal debug Flutter app. The Dart
code is bundled in JIT mode and is brought into Xcode with a `.framework` code is bundled in JIT mode and is brought into Xcode with a `.framework`
@ -246,7 +241,7 @@ dependency on the prebuilt local engine. It's then installed and executed on a
simulator via Xcode. simulator via Xcode.
Unlike a normal Flutter app, the Flutter framework on the Dart side is a Unlike a normal Flutter app, the Flutter framework on the Dart side is a
lightweight fake at https://github.com/flutter/engine/tree/main/testing/ios_scenario_app/lib lightweight fake at [`testing/ios_scenario_app/lib`](../../testing/ios_scenario_app/lib/).
that implements some of the basic functionalities of `dart:ui` Window rather that implements some of the basic functionalities of `dart:ui` Window rather
than using the real Flutter framework at `flutter/flutter`. than using the real Flutter framework at `flutter/flutter`.
@ -256,35 +251,35 @@ The end-to-end test can be executed by running:
testing/ios_scenario_app/run_ios_tests.sh testing/ios_scenario_app/run_ios_tests.sh
``` ```
Additional end-to-end instrumented tests can be added to https://github.com/flutter/engine/tree/main/testing/ios_scenario_app/ios/Scenarios/ScenariosTests. Additional end-to-end instrumented tests can be added to [`testing/ios_scenario_app/ios/Scenarios/ScenariosTests`](../../testing/ios_scenario_app/ios/Scenarios/ScenariosTests/).
If supporting logic is needed for the test case, it can be added to the If supporting logic is needed for the test case, it can be added to the
Android app under-test in https://github.com/flutter/engine/tree/main/testing/ios_scenario_app/ios/Scenarios/Scenarios Android app under-test in [`testing/ios_scenario_app/ios/Scenarios/Scenarios`](../../testing/ios_scenario_app/ios/Scenarios/Scenarios/).
or to the fake Flutter framework under-test in https://github.com/flutter/engine/tree/main/testing/ios_scenario_app/lib. or to the fake Flutter framework under-test in [`testing/ios_scenario_app/lib`](../../testing/ios_scenario_app/lib/).
As best practice, favor adding unit tests if possible since end-to-end tests As best practice, favor adding unit tests if possible since end-to-end tests
are, by nature, non-hermetic, slow and flaky. are, by nature, non-hermetic, slow and flaky.
End-to-end tests on iOS are executed during pre-submit on our CI system when End-to-end tests on iOS are executed during pre-submit on our CI system when
submitting PRs to the `flutter/engine` repository. submitting PRs.
## Dart - dart:ui ## Dart - dart:ui
If you edit `.dart` files in https://github.com/flutter/engine/tree/main/lib/ui, If you edit `.dart` files in [`lib/ui`](../../lib/ui/) you're working on the
you're working on the 'dart:ui' package which is the interface between `dart:ui` package which is the interface between the C++ engine and the Dart
the C++ engine and the Dart Flutter framework. Flutter framework.
### Unit tests ### Unit tests (Dart)
Dart classes in https://github.com/flutter/engine/tree/main/lib/ui have matching Dart classes in [`lib/ui`](../../lib/ui/) have matching unit tests at
unit tests at https://github.com/flutter/engine/tree/main/testing/dart. [`testing/dart`](../../testing/dart/).
When editing production files in the 'dart:ui' package, add to or create a When editing production files in the 'dart:ui' package, add to or create a
test file in `testing/dart`. test file in `testing/dart`.
To run the Dart unit tests, use the script: To run the Dart unit tests, use the script:
``` ```sh
testing/run_tests.py --type=dart testing/run_tests.py --type=dart
``` ```
@ -317,4 +312,4 @@ Assuming your `flutter` and `engine` working directories are siblings, you can r
## Web engine ## Web engine
Web tests are run via the `felt` command. More details can be found in [lib/web_ui/README.md](https://github.com/flutter/engine/blob/main/lib/web_ui/README.md#hacking-on-the-web-engine). Web tests are run via the `felt` command. More details can be found in [lib/web_ui/README.md](../../lib/web_ui/README.md).