flutter/packages/flutter_tools/test/integration.shard
Loïc Sharma fa04f4a8d2
[SwiftPM] Make 'flutter build ios-framework' generate an empty Package.swift (#161464)
<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

### Background

Flutter generates a `Package.swift` file that contains the plugins that
should be built using SwiftPM.

Since Flutter does not support Swift Package Manager in add-to-app
scenarios yet, Flutter uses CocoaPods to build plugins if you call
`flutter build ios-framework`. To ensure `pod install` is rerun, the
tool deleted the `Package.swift` file.

Unfortunately, deleting the `Package.swift` file causes the Xcode
project to no longer build if it has SwiftPM integration. This caused
the [`build_ios_framework_module_test` to fail when SwiftPM was turned
on by
default](https://ci.chromium.org/ui/p/flutter/builders/prod/Mac%20build_ios_framework_module_test/21807/overview).

### Fix

Instead of deleting the `Package.swift` file, we instead generate a
`Package.swift` file with no dependencies. This will invalidate the
fingerprint and cause `pod install` to rerun if the app had plugins that
were previously built using SwiftPM.

## 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
2025-01-14 21:13:15 +00:00
..
debug_adapter Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
isolated [native assets] Roll dependencies (#160672) 2025-01-02 19:26:02 +00:00
test_data Remove support for imperative apply of Flutter Gradle Plugin (#160947) 2025-01-07 21:51:59 +00:00
analyze_all_templates_test.dart Remove --template=skeleton and add a placeholder error message instead. (#160695) 2024-12-24 00:02:29 +00:00
analyze_once_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
analyze_size_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
analyze_suggestions_integration_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_e2e_api_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_gradle_daemon_cache_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_gradle_flutter_source_path_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_gradle_java_version_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_gradle_legacy_flutter_plugins_strings_in_comments_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_gradle_outputs_app_link_settings_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_gradle_print_build_variants_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_plugin_compilesdkversion_mismatch_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_plugin_example_app_build_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_plugin_ndkversion_mismatch_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_plugin_new_output_dir_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
android_run_flutter_gradle_plugin_tests_test.dart Convert base application name handling to kotlin source (start of FGP kt conversion) (#155963) 2025-01-13 17:56:06 +00:00
asset_transformation_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
background_isolate_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
bash_entrypoint_test.dart Fix bash entrypoint tests (#160705) 2024-12-22 00:39:11 +00:00
batch_entrypoint_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
break_on_framework_exceptions_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
build_ios_config_only_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
build_macos_config_only_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
build_preview_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
cache_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
command_output_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
coverage_collection_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
daemon_mode_test.dart apply dart_style 3.0.1 (#160875) 2024-12-27 00:06:41 +00:00
debugger_stepping_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
deferred_components_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
devtools_uri_test.dart Define and use flutterBin consistently across integration.shard. (#159007) 2024-11-18 19:00:04 +00:00
downgrade_upgrade_integration_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
driver_environment_test.dart Propagate environment variables when flutter drive is invoked. (#161452) 2025-01-13 18:48:58 +00:00
exit_code_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
expression_evaluation_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
flutter_attach_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
flutter_build_android_app_project_builddir_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
flutter_build_apk_verbose_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
flutter_build_config_only_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
flutter_build_wasm_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
flutter_build_windows_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
flutter_build_with_compilation_error_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
flutter_gen_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
flutter_plugins_dependencies_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
flutter_run_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
flutter_run_with_error_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
forbidden_imports_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
gen_l10n_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
gradle_non_android_plugin_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
hot_reload_errors_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
hot_reload_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
hot_reload_with_asset_test.dart Add a tag and assert some state in FlutterTestDriver tests. (#159099) 2024-11-18 23:37:05 +00:00
lifetime_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
observatory_port_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
overall_experience_test.dart Allow integration test helpers to work on substrings instead of whole strings (#160437) 2024-12-20 17:27:33 +00:00
plist_parser_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
README.md Added missing code block language in docs (#147481) 2024-05-01 14:44:27 +00:00
shader_compiler_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
stateless_stateful_hot_reload_test.dart Add a tag and assert some state in FlutterTestDriver tests. (#159099) 2024-11-18 23:37:05 +00:00
swift_package_manager_create_app_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
swift_package_manager_create_plugin_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
swift_package_manager_test.dart [SwiftPM] Make 'flutter build ios-framework' generate an empty Package.swift (#161464) 2025-01-14 21:13:15 +00:00
swift_package_manager_utils.dart Revert "[SwiftPM] Add separate feature flag for the app migration (#158897)" (#161342) 2025-01-09 00:30:06 +00:00
template_manifest_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
test_driver.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
test_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
test_utils.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
timeline_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
tool_backend_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
transition_test_utils.dart Allow integration test helpers to work on substrings instead of whole strings (#160437) 2024-12-20 17:27:33 +00:00
unit_coverage_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
variable_expansion_windows_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
variable_expansion_windows.dart Enable avoid_print lint. (#91444) 2021-10-07 16:48:04 -07:00
vmservice_integration_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
web_plugin_registrant_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
xcode_backend_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00

Integration tests

These tests are not hermetic, and use the actual Flutter SDK. While they don't require actual devices, they run flutter_tester to test Dart VM and Flutter integration.

Use this command to run (from the flutter_tools directory):

../../bin/cache/dart-sdk/bin/dart run test test/integration.shard

You need to have downloaded the Dart SDK in your Flutter clone for this to work. Running ../../bin/flutter will automatically download it.

Coverage exclusion

These tests are expensive to run and do not give meaningful coverage information for the flutter tool (since they are black-box tests that run the tool as a subprocess, rather than being unit tests). For this reason, they are in a separate shard when running on continuous integration and are not run when calculating coverage.

Adding new test files

When adding a new test file make sure that it ends with _test.dart, or else it will not be run.