From da0cd69659c57d5e7d97ed9b77c7fecad609ed8f Mon Sep 17 00:00:00 2001 From: Gustl22 Date: Wed, 20 Dec 2023 16:45:08 +0100 Subject: [PATCH] Revert automated changes made to deprecated settings.gradle (plugins.each) (#140037) Restore testing deprecated settings.gradle (plugins.each). Updated presumably by accident in #83067 Split from #137115 See also https://github.com/flutter/flutter/pull/137115#issuecomment-1781909865 --- .../gradle_deprecated_settings/README.md | 6 +-- .../android/settings.gradle | 34 +++++++-------- .../deprecated_gradle_settings_test.dart | 41 ++++++++++++++++--- 3 files changed, 54 insertions(+), 27 deletions(-) diff --git a/dev/integration_tests/gradle_deprecated_settings/README.md b/dev/integration_tests/gradle_deprecated_settings/README.md index bd04f25921e7..5c00f9109734 100644 --- a/dev/integration_tests/gradle_deprecated_settings/README.md +++ b/dev/integration_tests/gradle_deprecated_settings/README.md @@ -1,7 +1,7 @@ # Deprecated settings.gradle -This project is meant to test that apps using the current `android/settings.gradle` -can still be built. This project can be removed once apps have been migrated to -this new file. +This project is meant to test that apps using the deprecated +`android/settings.gradle` (_PluginEach_ used until Flutter v1.22.0) can still be built. +This project can be removed once apps have been migrated to this new file. Issue: https://github.com/flutter/flutter/issues/54566 diff --git a/dev/integration_tests/gradle_deprecated_settings/android/settings.gradle b/dev/integration_tests/gradle_deprecated_settings/android/settings.gradle index eec0e0e6a7f3..80b2e6844464 100644 --- a/dev/integration_tests/gradle_deprecated_settings/android/settings.gradle +++ b/dev/integration_tests/gradle_deprecated_settings/android/settings.gradle @@ -2,27 +2,23 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// This file is auto generated. -// To update all the settings.gradle files in the Flutter repo, -// See dev/tools/bin/generate_gradle_lockfiles.dart. +// This is the `settings.gradle` file that apps were created with until Flutter +// v1.22.0. This file has changed, so it must be migrated in existing projects. -pluginManagement { - def flutterSdkPath = { - def properties = new Properties() - file("local.properties").withInputStream { properties.load(it) } - def flutterSdkPath = properties.getProperty("flutter.sdk") - assert flutterSdkPath != null, "flutter.sdk not set in local.properties" - return flutterSdkPath - } - settings.ext.flutterSdkPath = flutterSdkPath() +include ':app' - includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") +def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false - } +def plugins = new Properties() +def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') +if (pluginsFile.exists()) { + pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } } -include ":app" - -apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins.each { name, path -> + def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() + include ":$name" + project(":$name").projectDir = pluginDirectory +} diff --git a/packages/flutter_tools/test/integration.shard/deprecated_gradle_settings_test.dart b/packages/flutter_tools/test/integration.shard/deprecated_gradle_settings_test.dart index 24e7d5be1c39..dd4723d4a429 100644 --- a/packages/flutter_tools/test/integration.shard/deprecated_gradle_settings_test.dart +++ b/packages/flutter_tools/test/integration.shard/deprecated_gradle_settings_test.dart @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'package:file/src/interface/file.dart'; import 'package:file_testing/file_testing.dart'; import 'package:flutter_tools/src/base/io.dart'; @@ -16,6 +17,40 @@ void main() { final String workingDirectory = fileSystem.path.join(getFlutterRoot(), 'dev', 'integration_tests', 'gradle_deprecated_settings'); final String flutterBin = fileSystem.path.join(getFlutterRoot(), 'bin', 'flutter'); + final File settingsDotGradleFile = fileSystem.file( + fileSystem.path.join(workingDirectory, 'android', 'settings.gradle')); + const String expectedSettingsDotGradle = r""" +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This is the `settings.gradle` file that apps were created with until Flutter +// v1.22.0. This file has changed, so it must be migrated in existing projects. + +include ':app' + +def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +def plugins = new Properties() +def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') +if (pluginsFile.exists()) { + pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } +} + +plugins.each { name, path -> + def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() + include ":$name" + project(":$name").projectDir = pluginDirectory +} +"""; + + expect( + settingsDotGradleFile.readAsStringSync().trim().replaceAll('\r', ''), + equals(expectedSettingsDotGradle.trim()), + ); + final ProcessResult result = await processManager.run([ flutterBin, 'build', @@ -25,11 +60,7 @@ void main() { '--verbose', ], workingDirectory: workingDirectory); - printOnFailure('Output of flutter build apk:'); - printOnFailure(result.stdout.toString()); - printOnFailure(result.stderr.toString()); - - expect(result.exitCode, 0); + expect(result, const ProcessResultMatcher()); final String apkPath = fileSystem.path.join( workingDirectory, 'build', 'app', 'outputs', 'flutter-apk', 'app-debug.apk');