diff --git a/product/gradle-plugin/src/test/integration/data/base/8.5/build.gradle.kts b/product/gradle-plugin/src/test/integration/data/base/8.5/build.gradle.kts new file mode 100644 index 0000000000..ff78d1ee64 --- /dev/null +++ b/product/gradle-plugin/src/test/integration/data/base/8.5/build.gradle.kts @@ -0,0 +1,15 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { + // Plugin versions are configured in settings.gradle.kts, because dynamic versions + // are not possible here. See + // https://docs.gradle.org/current/userguide/plugins.html#sec:plugin_version_management + // + // Listing the plugins in settings.gradle.kts is enough to enable the `plugins` + // syntax in subprojects, but the `apply` syntax requires them to be listed here as + // well. + id("com.android.application") apply false + id("com.android.library") apply false + id("com.android.dynamic-feature") apply false + id("org.jetbrains.kotlin.android") apply false + id("com.chaquo.python") apply false +} diff --git a/product/gradle-plugin/src/test/integration/data/base/8.5/gradle.properties b/product/gradle-plugin/src/test/integration/data/base/8.5/gradle.properties new file mode 100644 index 0000000000..aee4471768 --- /dev/null +++ b/product/gradle-plugin/src/test/integration/data/base/8.5/gradle.properties @@ -0,0 +1,33 @@ +# The test script uses this to set JAVA_HOME. +chaquopy.java.version=17 + +agpVersion=8.5.0-rc01 + +# These variables will be filled in by the test script. +chaquopyRepository= +chaquopyVersion= + +# Gradle Daemon will terminate itself after specified number of idle milliseconds. Default is +# 10800000 (3 hours), but that can overload the machine when running integration tests on many +# versions. Reduce to 30 minutes. +org.gradle.daemon.idletimeout=1800000 + +# Default settings generated by the new project wizard: + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. For more details, visit +# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true diff --git a/product/gradle-plugin/src/test/integration/data/base/8.5/gradle/wrapper/gradle-wrapper.properties b/product/gradle-plugin/src/test/integration/data/base/8.5/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..48c0a02ca4 --- /dev/null +++ b/product/gradle-plugin/src/test/integration/data/base/8.5/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/product/gradle-plugin/src/test/integration/data/base/8.5/settings.gradle.kts b/product/gradle-plugin/src/test/integration/data/base/8.5/settings.gradle.kts new file mode 100644 index 0000000000..2cd5e1fc21 --- /dev/null +++ b/product/gradle-plugin/src/test/integration/data/base/8.5/settings.gradle.kts @@ -0,0 +1,46 @@ +pluginManagement { + // These are defined in gradle.properties. + val chaquopyRepository: String by settings + val chaquopyVersion: String by settings + val agpVersion: String by settings + + repositories { + maven { url = uri(chaquopyRepository) } + google { + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } + mavenCentral() + gradlePluginPortal() + } + + plugins { + id("com.android.application") version agpVersion + id("com.android.library") version agpVersion + id("com.android.dynamic-feature") version agpVersion + id("org.jetbrains.kotlin.android") version "1.9.0" + id("com.chaquo.python") version chaquopyVersion + } +} + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} + +rootProject.name = "My Application" + +for (f in rootDir.listFiles()!!) { + for (ext in listOf("gradle", "gradle.kts")) { + if (File(f, "build.$ext").exists()) { + include(f.name) + break + } + } +} diff --git a/product/gradle-plugin/src/test/integration/test_gradle_plugin.py b/product/gradle-plugin/src/test/integration/test_gradle_plugin.py index 71ae618346..c41942c891 100644 --- a/product/gradle-plugin/src/test/integration/test_gradle_plugin.py +++ b/product/gradle-plugin/src/test/integration/test_gradle_plugin.py @@ -619,8 +619,15 @@ def test_conflict(self): run.rerun("PythonSrc/conflict_include", **kwargs) def conflict_error(self, variant, filename): - return (fr"(?s)failed for task ':app:merge{variant}PythonSources'.*" - fr'Encountered duplicate path "{filename}"') + return ( + fr"(?s)failed for task ':app:merge{variant}PythonSources'.*" + ( + fr'Encountered duplicate path "{filename}"' + if agp_version_info < (8, 5) + + # No leading quote, because the message includes the full path. + else fr"{filename}' has already been copied there" + ) + ) def test_set_dirs(self): self.RunGradle("base", "PythonSrc/set_dirs", app=["two.py"])