mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
In new Swift code in the iOS/macOS embedder, we currently lack core features currently provided by shared internal C++ library code in FML. This provides a logging implementation that can be used across the iOS/macOS embedders, whether in Swift, Objective-C, or C++ code, and migrates the iOS and macOS embedders to use it. This patch also introduces gn support for authoring [Swift Testing][] tests. * Introduces a `SwiftTestingRunner` class that launches the Swift Testing test runner, which runs all tests annotated with `@Test` linked into the current executable. * Introduces a `SwiftTestingRunnerMain` class that implements a main entrypoint that launches the `SwiftTestingRunner`. * Introduces a `gn` `source_set` target (`//flutter/shell/platform/darwin/common:swift_testing_main`) that includes the Swift Testing main entrypoint, such that `executable` targets can add it to their deps to automatically be built as a Swift Testing runner. * Adds a `framework_common_swift_unittests` executable target for the common framework unit tests, and wires that into the build and `run_tests.py` for macOS. Issue: https://github.com/flutter/flutter/issues/168564 Issue: https://github.com/flutter/flutter/issues/144791 [Swift Testing]: https://developer.apple.com/xcode/swift-testing/ ## 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
Flutter Engine
Setting up the Engine development environment
See here
gclient bootstrap
Flutter engine uses gclient to manage dependencies.
If you've already cloned the flutter repository: