summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Perez <diegoperez@google.com>2022-09-16 12:54:38 +0000
committerDiego Perez <diegoperez@google.com>2022-09-22 14:48:05 +0000
commite400fedafc1a3a9a764de6bf90ba03d9b8306580 (patch)
tree9476b4a70cf7a8fd128d57bff1e009fbdf494ff7
parent90ed561f5e32a626145d64790629fba5fff06374 (diff)
downloadidea-e400fedafc1a3a9a764de6bf90ba03d9b8306580.tar.gz
Add support for pinning compileSdk in Gradle tests
This is to support the migration to Android 33 while supporting old AGP tests that need using 32. Test: bazel test --config=remote --notest_keep_going //tools/adt/idea/old-agp-tests/... Bug: N/A Change-Id: Ic9135212f160bc5616c891194063604e5cdf5e41
-rw-r--r--android-test-framework/testSrc/com/android/tools/idea/testing/AgpIntegrationTests.kt21
-rw-r--r--android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleProjectRule.kt2
-rw-r--r--android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestCase.java19
-rw-r--r--android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestUtils.kt118
-rw-r--r--android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTests.java46
-rw-r--r--android-uitests/testSrc/com/android/tools/idea/tests/gui/newpsd/PsdGuiTestRule.kt2
-rw-r--r--android/testSrc/com/android/tools/idea/gradle/project/sync/GradleSyncIntegrationTest.java4
-rw-r--r--android/testSrc/com/android/tools/idea/gradle/project/sync/perf/GradleSyncPerfTest.java1
-rw-r--r--android/testSrc/com/android/tools/idea/gradle/structure/model/PsModuleCollectionTest.kt3
-rw-r--r--compose-designer/testSrc/com/android/tools/idea/compose/gradle/BuildTest.kt2
-rw-r--r--old-agp-tests/BUILD1
-rw-r--r--old-agp-tests/agp_versions.bzl47
-rw-r--r--project-system-gradle-upgrade/testSrc/com/android/tools/idea/gradle/project/upgrade/integration/ProjectsUpgradeTestBase.kt4
-rw-r--r--project-system-gradle/testSrc/com/android/tools/idea/projectsystem/gradle/GradleModuleHierarchyProviderTest.kt2
-rwxr-xr-xuitest-framework/testSrc/com/android/tools/idea/tests/gui/framework/GuiTestRule.java4
15 files changed, 171 insertions, 105 deletions
diff --git a/android-test-framework/testSrc/com/android/tools/idea/testing/AgpIntegrationTests.kt b/android-test-framework/testSrc/com/android/tools/idea/testing/AgpIntegrationTests.kt
index 433a4f3ee6b..c7fa5ca2927 100644
--- a/android-test-framework/testSrc/com/android/tools/idea/testing/AgpIntegrationTests.kt
+++ b/android-test-framework/testSrc/com/android/tools/idea/testing/AgpIntegrationTests.kt
@@ -42,15 +42,20 @@ enum class AgpVersionSoftwareEnvironmentDescriptor(
/**
* Builder model version to query.
*/
- val modelVersion: ModelVersion = ModelVersion.V2
+ val modelVersion: ModelVersion = ModelVersion.V2,
+
+ /**
+ * The compileSdk to use in this test. `null` means the project default.
+ */
+val compileSdk: String? = null
) {
- AGP_32("3.3.2", gradleVersion = "5.5", kotlinVersion = "1.4.32", modelVersion = ModelVersion.V1),
- AGP_35("3.5.0", gradleVersion = "5.5", kotlinVersion = "1.4.32", modelVersion = ModelVersion.V1),
- AGP_40("4.0.0", gradleVersion = "6.7.1", modelVersion = ModelVersion.V1),
- AGP_41("4.1.0", gradleVersion = "6.7.1", modelVersion = ModelVersion.V1),
- AGP_42("4.2.0", gradleVersion = "6.7.1", modelVersion = ModelVersion.V1),
- AGP_70("7.0.0", gradleVersion = "7.0.2", modelVersion = ModelVersion.V1),
- AGP_71("7.1.0", gradleVersion = "7.2", modelVersion = ModelVersion.V1),
+ AGP_32("3.3.2", gradleVersion = "5.5", kotlinVersion = "1.4.32", modelVersion = ModelVersion.V1, compileSdk = "32"),
+ AGP_35("3.5.0", gradleVersion = "5.5", kotlinVersion = "1.4.32", modelVersion = ModelVersion.V1, compileSdk = "32"),
+ AGP_40("4.0.0", gradleVersion = "6.7.1", modelVersion = ModelVersion.V1, compileSdk = "32"),
+ AGP_41("4.1.0", gradleVersion = "6.7.1", modelVersion = ModelVersion.V1, compileSdk = "32"),
+ AGP_42("4.2.0", gradleVersion = "6.7.1", modelVersion = ModelVersion.V1, compileSdk = "32"),
+ AGP_70("7.0.0", gradleVersion = "7.0.2", modelVersion = ModelVersion.V1, compileSdk = "32"),
+ AGP_71("7.1.0", gradleVersion = "7.2", modelVersion = ModelVersion.V1, compileSdk = "32"),
AGP_72_V1("7.2.0", gradleVersion = "7.3.3", modelVersion = ModelVersion.V1),
AGP_72("7.2.0", gradleVersion = "7.3.3", modelVersion = ModelVersion.V2),
AGP_73("7.3.0-beta05", gradleVersion = "7.4", modelVersion = ModelVersion.V2),
diff --git a/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleProjectRule.kt b/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleProjectRule.kt
index 599a4e79d63..374f68d64a8 100644
--- a/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleProjectRule.kt
+++ b/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleProjectRule.kt
@@ -93,7 +93,7 @@ class AndroidGradleProjectRule(val workspaceRelativeTestDataPath: @SystemIndepen
preLoad: ((projectRoot: File) -> Unit)? = null
) {
if (preLoad != null) {
- val rootFile = delegateTestCase.prepareProjectForImport(projectPath, gradleVersion, agpVersion, kotlinVersion, ndkVersion)
+ val rootFile = delegateTestCase.prepareProjectForImport(projectPath, gradleVersion, agpVersion, kotlinVersion, ndkVersion, null)
preLoad(rootFile)
delegateTestCase.importProject()
diff --git a/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestCase.java b/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestCase.java
index 5d91519a723..4afb0f36701 100644
--- a/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestCase.java
+++ b/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestCase.java
@@ -264,7 +264,7 @@ public abstract class AndroidGradleTestCase extends AndroidTestBase implements G
@Nullable String gradlePluginVersion,
@Nullable String kotlinVersion,
@Nullable String ndkVersion) throws Exception {
- prepareProjectForImport(relativePath, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion);
+ prepareProjectForImport(relativePath, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion, null);
importProject();
prepareProjectForTest(getProject(), chosenModuleName);
@@ -293,18 +293,19 @@ public abstract class AndroidGradleTestCase extends AndroidTestBase implements G
@Nullable String gradlePluginVersion,
@Nullable String kotlinVersion,
@Nullable String ndkVersion,
+ @Nullable String compileSdkVersion,
File... localRepos) throws IOException {
- AndroidGradleTests.defaultPatchPreparedProject(projectRoot, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion, localRepos);
+ AndroidGradleTests.defaultPatchPreparedProject(projectRoot, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion, compileSdkVersion, localRepos);
}
@NotNull
protected File prepareProjectForImport(@NotNull @SystemIndependent String relativePath) throws IOException {
- return prepareProjectForImport(relativePath, null, null, null, null);
+ return prepareProjectForImport(relativePath, null, null, null, null, null);
}
@NotNull
protected final File prepareProjectForImport(@NotNull @SystemIndependent String relativePath, @NotNull File targetPath) throws IOException {
- return prepareProjectForImport(relativePath, targetPath, null, null, null, null);
+ return prepareProjectForImport(relativePath, targetPath, null, null, null, null, null);
}
/**
@@ -316,13 +317,14 @@ public abstract class AndroidGradleTestCase extends AndroidTestBase implements G
@Nullable String gradleVersion,
@Nullable String gradlePluginVersion,
@Nullable String kotlinVersion,
- @Nullable String ndkVersion) throws IOException {
+ @Nullable String ndkVersion,
+ @Nullable String compileSdkVersion) throws IOException {
File projectSourceRoot = resolveTestDataPath(relativePath);
prepareGradleProject(
projectSourceRoot,
targetPath,
- file -> patchPreparedProject(file, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion,
+ file -> patchPreparedProject(file, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion, compileSdkVersion,
getAdditionalRepos().toArray(new File[0])));
return targetPath;
}
@@ -332,9 +334,10 @@ public abstract class AndroidGradleTestCase extends AndroidTestBase implements G
@Nullable String gradleVersion,
@Nullable String gradlePluginVersion,
@Nullable String kotlinVersion,
- @Nullable String ndkVersion) throws IOException {
+ @Nullable String ndkVersion,
+ @Nullable String compileSdk) throws IOException {
File projectRoot = new File(toSystemDependentName(getProject().getBasePath()));
- return prepareProjectForImport(relativePath, projectRoot, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion);
+ return prepareProjectForImport(relativePath, projectRoot, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion, compileSdk);
}
@NotNull
diff --git a/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestUtils.kt b/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestUtils.kt
index 72ed279727f..06b4f497a21 100644
--- a/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestUtils.kt
+++ b/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestUtils.kt
@@ -524,7 +524,9 @@ data class AndroidProjectBuilder(
androidLibraryDependencyList(variant)
override fun mainArtifact(variant: String): IdeAndroidArtifactCoreImpl = mainArtifactStub(variant)
- override fun androidTestArtifact(variant: String, applicationId: String?): IdeAndroidArtifactCoreImpl? = androidTestArtifactStub(variant, applicationId)
+ override fun androidTestArtifact(variant: String, applicationId: String?): IdeAndroidArtifactCoreImpl? = androidTestArtifactStub(
+ variant, applicationId)
+
override fun unitTestArtifact(variant: String): IdeJavaArtifactCoreImpl? = unitTestArtifactStub(variant)
override fun testFixturesArtifact(variant: String): IdeAndroidArtifactCoreImpl? = testFixturesArtifactStub(variant)
override val variants: List<IdeVariantCoreImpl> = variants()
@@ -685,8 +687,8 @@ fun AndroidProjectStubBuilder.buildDebugBuildTypeStub(): IdeBuildTypeContainerIm
),
debugSourceProvider,
listOfNotNull(
- androidTestDebugSourceProvider?.let {IdeSourceProviderContainerImpl(ARTIFACT_NAME_ANDROID_TEST, it)},
- testDebugSourceProvider?.let {IdeSourceProviderContainerImpl(ARTIFACT_NAME_UNIT_TEST, it)}
+ androidTestDebugSourceProvider?.let { IdeSourceProviderContainerImpl(ARTIFACT_NAME_ANDROID_TEST, it) },
+ testDebugSourceProvider?.let { IdeSourceProviderContainerImpl(ARTIFACT_NAME_UNIT_TEST, it) }
)
)
}
@@ -788,19 +790,19 @@ fun AndroidProjectStubBuilder.buildAndroidTestArtifactStub(
): IdeAndroidArtifactCoreImpl {
val dependenciesStub = buildDependenciesStub(
dependencies = toIdeModuleDependencies(androidModuleDependencies(variant).orEmpty()) +
- listOf(
- IdeDependencyCoreImpl(
- internedModels.getOrCreate(
- IdeModuleLibraryImpl(
- buildId = buildId,
- projectPath = gradleProjectPath,
- variant = variant,
- lintJar = null,
- sourceSet = IdeModuleWellKnownSourceSet.MAIN
- )
- )
- )
- )
+ listOf(
+ IdeDependencyCoreImpl(
+ internedModels.getOrCreate(
+ IdeModuleLibraryImpl(
+ buildId = buildId,
+ projectPath = gradleProjectPath,
+ variant = variant,
+ lintJar = null,
+ sourceSet = IdeModuleWellKnownSourceSet.MAIN
+ )
+ )
+ )
+ )
)
val assembleTaskName = "assemble".appendCapitalized(variant).appendCapitalized("androidTest")
return IdeAndroidArtifactCoreImpl(
@@ -849,19 +851,19 @@ fun AndroidProjectStubBuilder.buildUnitTestArtifactStub(
variant: String,
dependencies: IdeDependenciesCoreImpl = buildDependenciesStub(
dependencies = toIdeModuleDependencies(androidModuleDependencies(variant).orEmpty()) +
- listOf(
- IdeDependencyCoreImpl(
- internedModels.getOrCreate(
- IdeModuleLibraryImpl(
- buildId = buildId,
- projectPath = gradleProjectPath,
- variant = variant,
- lintJar = null,
- sourceSet = IdeModuleWellKnownSourceSet.MAIN
- )
- )
- )
- )
+ listOf(
+ IdeDependencyCoreImpl(
+ internedModels.getOrCreate(
+ IdeModuleLibraryImpl(
+ buildId = buildId,
+ projectPath = gradleProjectPath,
+ variant = variant,
+ lintJar = null,
+ sourceSet = IdeModuleWellKnownSourceSet.MAIN
+ )
+ )
+ )
+ )
),
mockablePlatformJar: File? = null
): IdeJavaArtifactCoreImpl {
@@ -1144,7 +1146,7 @@ fun setupTestProjectFromAndroidModel(
if (moduleBuilders.none { it.gradlePath == ":" }) {
error(
"Each project needs to have ':' module. " +
- "Add `JavaModuleModelBuilder.rootModuleBuilder` to add a default one."
+ "Add `JavaModuleModelBuilder.rootModuleBuilder` to add a default one."
)
}
if (IdeSdks.getInstance().androidSdkPath === null) {
@@ -1333,7 +1335,7 @@ private fun setupTestProjectFromAndroidModelCore(
moduleBuilder.agpVersion ?: LatestKnownPluginVersionProvider.INSTANCE.get(),
internedModels
)
- featureToBase.putAll(androidProject.dynamicFeatures.map {it to gradlePath})
+ featureToBase.putAll(androidProject.dynamicFeatures.map { it to gradlePath })
fun IdeAndroidProjectImpl.populateBaseFeature(): IdeAndroidProjectImpl {
return if (projectType != IdeAndroidProjectType.PROJECT_TYPE_DYNAMIC_FEATURE) this
@@ -1363,6 +1365,7 @@ private fun setupTestProjectFromAndroidModelCore(
}
}
}
+
is JavaModuleModelBuilder ->
createJavaModuleDataNode(
parentModuleOrProjectName = projectName,
@@ -1391,7 +1394,8 @@ private fun setupTestProjectFromAndroidModelCore(
)
)
- setupDataNodesForSelectedVariant(project, toSystemIndependentName(rootProjectBasePath.path), androidModels, projectDataNode, libraryResolver)
+ setupDataNodesForSelectedVariant(project, toSystemIndependentName(rootProjectBasePath.path), androidModels, projectDataNode,
+ libraryResolver)
mergeContentRoots(projectDataNode)
PlatformTestUtil.dispatchAllInvocationEventsInIdeEventQueue()
@@ -1477,13 +1481,13 @@ private fun createAndroidModuleDataNode(
)
)
- when(ndkModel) {
+ when (ndkModel) {
is V2NdkModel -> {
val selectedAbiName = selectedAbiName
- ?: ndkModel.abiByVariantAbi.keys.firstOrNull { it.variant == selectedVariantName }?.abi
- ?: error(
- "Cannot determine the selected ABI for module '$qualifiedModuleName' with the selected variant '$selectedVariantName'"
- )
+ ?: ndkModel.abiByVariantAbi.keys.firstOrNull { it.variant == selectedVariantName }?.abi
+ ?: error(
+ "Cannot determine the selected ABI for module '$qualifiedModuleName' with the selected variant '$selectedVariantName'"
+ )
moduleDataNode.addChild(
DataNode<NdkModuleModel>(
AndroidProjectKeys.NDK_MODEL,
@@ -1498,12 +1502,13 @@ private fun createAndroidModuleDataNode(
)
)
}
+
is V1NdkModel -> {
val selectedAbiName = selectedAbiName
- ?: ndkModel.nativeVariantAbis.firstOrNull { it.variantName == selectedVariantName }?.abi
- ?: error(
- "Cannot determine the selected ABI for module '$qualifiedModuleName' with the selected variant '$selectedVariantName'"
- )
+ ?: ndkModel.nativeVariantAbis.firstOrNull { it.variantName == selectedVariantName }?.abi
+ ?: error(
+ "Cannot determine the selected ABI for module '$qualifiedModuleName' with the selected variant '$selectedVariantName'"
+ )
moduleDataNode.addChild(
DataNode<NdkModuleModel>(
AndroidProjectKeys.NDK_MODEL,
@@ -1741,7 +1746,7 @@ private fun mergeContentRoots(projectDataNode: DataNode<ProjectData>) {
moduleNodes.forEach { moduleNode ->
mergeModuleContentRoots(weightMap, moduleNode.node)
- moduleNode.node.findAll(GradleSourceSetData.KEY).forEach { sourceSetNode ->
+ moduleNode.node.findAll(GradleSourceSetData.KEY).forEach { sourceSetNode ->
mergeModuleContentRoots(weightMap, sourceSetNode.node)
}
}
@@ -1844,10 +1849,11 @@ interface IntegrationTestEnvironment {
*/
fun getBaseTestPath(): @SystemDependent String
}
+
/**
* See implementing classes for usage examples.
*/
-interface GradleIntegrationTest: IntegrationTestEnvironment {
+interface GradleIntegrationTest : IntegrationTestEnvironment {
/**
* The path to a test data directory relative to the workspace or `null` to use the legacy resolution.
@@ -1889,7 +1895,8 @@ fun GradleIntegrationTest.prepareGradleProject(
gradleVersion = agpVersion.gradleVersion,
gradlePluginVersion = agpVersion.agpVersion,
kotlinVersion = agpVersion.kotlinVersion,
- ndkVersion = ndkVersion
+ ndkVersion = ndkVersion,
+ compileSdkVersion = agpVersion.compileSdk,
)
}
@@ -1907,7 +1914,8 @@ fun IntegrationTestEnvironment.prepareGradleProject(
gradleVersion = agpVersion.gradleVersion,
gradlePluginVersion = agpVersion.agpVersion,
kotlinVersion = agpVersion.kotlinVersion,
- ndkVersion = ndkVersion
+ ndkVersion = ndkVersion,
+ compileSdkVersion = agpVersion.compileSdk,
)
}
@@ -1921,7 +1929,8 @@ fun GradleIntegrationTest.prepareGradleProject(
gradleVersion: String?,
gradlePluginVersion: String?,
kotlinVersion: String?,
- ndkVersion: String? = null
+ ndkVersion: String? = null,
+ compileSdkVersion: String? = null,
): File {
val testProjectAbsolutePath: File = resolveTestDataPath(testProjectPath)
val additionalRepositories: Collection<File> = getAdditionalRepos()
@@ -1933,7 +1942,8 @@ fun GradleIntegrationTest.prepareGradleProject(
gradleVersion,
gradlePluginVersion,
kotlinVersion,
- ndkVersion
+ ndkVersion,
+ compileSdkVersion
)
}
@@ -1944,7 +1954,8 @@ private fun IntegrationTestEnvironment.prepareGradleProject(
gradleVersion: String?,
gradlePluginVersion: String?,
kotlinVersion: String?,
- ndkVersion: String?
+ ndkVersion: String?,
+ compileSdkVersion: String?
): File {
val projectPath = nameToPath(name)
if (projectPath.exists()) throw IllegalArgumentException("Additional projects cannot be opened under the test name: $name")
@@ -1957,6 +1968,7 @@ private fun IntegrationTestEnvironment.prepareGradleProject(
projectRoot, gradleVersion, gradlePluginVersion,
kotlinVersion,
ndkVersion,
+ compileSdkVersion,
*additionalRepositories.toTypedArray()
)
})
@@ -2049,8 +2061,8 @@ private fun <T> openPreparedProject(
@Suppress("UnstableApiUsage")
if (options.disableKtsRelatedIndexing) {
- ScriptingSupport.EPN.getPoint(project).unregisterExtensions({_, _ -> false}, false)
- ScriptChangeListener.LISTENER.getPoint(project).unregisterExtensions({ _, _ -> false}, false)
+ ScriptingSupport.EPN.getPoint(project).unregisterExtensions({ _, _ -> false }, false)
+ ScriptChangeListener.LISTENER.getPoint(project).unregisterExtensions({ _, _ -> false }, false)
}
project.messageBus.connect(disposable).let { options.subscribe(it) }
val outputHandler = options.outputHandler
@@ -2084,7 +2096,8 @@ private fun <T> openPreparedProject(
try {
options.verifyOpened(project)
return action(project)
- } finally {
+ }
+ finally {
runInEdtAndWait {
PlatformTestUtil.saveProject(project, true)
ProjectUtil.closeAndDispose(project)
@@ -2187,7 +2200,8 @@ fun Project.requestSyncAndWait() {
AndroidGradleTests.syncProject(this, GradleSyncInvoker.Request.testRequest())
if (ApplicationManager.getApplication().isDispatchThread) {
AndroidGradleTests.waitForSourceFolderManagerToProcessUpdates(this)
- } else {
+ }
+ else {
runInEdtAndWait {
AndroidGradleTests.waitForSourceFolderManagerToProcessUpdates(this)
}
diff --git a/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTests.java b/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTests.java
index 7c4cccc42c1..d57cc525f33 100644
--- a/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTests.java
+++ b/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTests.java
@@ -109,7 +109,9 @@ public class AndroidGradleTests {
private static final Pattern MAVEN_CENTRAL_REPOSITORY_PATTERN = Pattern.compile("mavenCentral\\(\\)");
private static final Pattern GRADLE_PLUGIN_PORTAL_REPOSITORY_PATTERN = Pattern.compile("gradlePluginPortal\\(\\)");
private static final Pattern MAVEN_REPOSITORY_PATTERN = Pattern.compile("maven \\{.*http.*\\}");
- /** Property name that allows adding multiple local repositories via JVM properties */
+ /**
+ * Property name that allows adding multiple local repositories via JVM properties
+ */
private static final String ADDITIONAL_REPOSITORY_PROPERTY = "idea.test.gradle.additional.repositories";
private static final long DEFAULT_TIMEOUT_MILLIS = 1000;
private static final String NDK_VERSION_PLACEHOLDER = "// ndkVersion \"{placeholder}\"";
@@ -149,11 +151,11 @@ public class AndroidGradleTests {
*/
@Deprecated
public static void updateGradleVersions(@NotNull File folderRootPath) throws IOException {
- updateToolingVersionsAndPaths(folderRootPath, null, null, null, null);
+ updateToolingVersionsAndPaths(folderRootPath, null, null, null, null, null);
}
public static void updateToolingVersionsAndPaths(@NotNull File folderRootPath) throws IOException {
- updateToolingVersionsAndPaths(folderRootPath, null, null, null, null);
+ updateToolingVersionsAndPaths(folderRootPath, null, null, null, null, null);
}
public static void updateToolingVersionsAndPaths(@NotNull File path,
@@ -161,9 +163,11 @@ public class AndroidGradleTests {
@Nullable String gradlePluginVersion,
@Nullable String kotlinVersion,
@Nullable String ndkVersion,
+ @Nullable String compileSdkVersion,
File... localRepos)
throws IOException {
- internalUpdateToolingVersionsAndPaths(path, true, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion, localRepos);
+ internalUpdateToolingVersionsAndPaths(path, true, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion, compileSdkVersion,
+ localRepos);
}
private static void internalUpdateToolingVersionsAndPaths(@NotNull File path,
@@ -172,6 +176,7 @@ public class AndroidGradleTests {
@Nullable String gradlePluginVersion,
@Nullable String kotlinVersion,
@Nullable String ndkVersion,
+ @Nullable String compileSdkVersion,
File... localRepos) throws IOException {
String toolsBaseVersion;
if (gradlePluginVersion != null) {
@@ -179,7 +184,8 @@ public class AndroidGradleTests {
int firstSeparator = gradlePluginVersion.indexOf('.');
int majorVersion = Integer.parseInt(gradlePluginVersion.substring(0, firstSeparator)) + 23;
toolsBaseVersion = majorVersion + gradlePluginVersion.substring(firstSeparator);
- } else {
+ }
+ else {
toolsBaseVersion = Version.ANDROID_TOOLS_BASE_VERSION;
}
@@ -206,7 +212,8 @@ public class AndroidGradleTests {
createGradleWrapper(path, gradleVersion != null ? gradleVersion : GRADLE_LATEST_VERSION);
}
for (File child : notNullize(path.listFiles())) {
- internalUpdateToolingVersionsAndPaths(child, false, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion, localRepos);
+ internalUpdateToolingVersionsAndPaths(child, false, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion,
+ compileSdkVersion, localRepos);
}
}
else if (fileAttributes.isRegularFile()) {
@@ -229,8 +236,12 @@ public class AndroidGradleTests {
contents = replaceRegexGroup(contents, "om.android.tools.lint:lint-api:(.+)['\"]", toolsBaseVersion);
contents = replaceRegexGroup(contents, "om.android.tools.lint:lint-checks:(.+)['\"]", toolsBaseVersion);
+
+ if (compileSdkVersion == null) {
+ compileSdkVersion = buildEnvironment.getCompileSdkVersion();
+ }
// App compat version needs to match compile SDK
- String appCompatMainVersion = BuildEnvironment.getInstance().getCompileSdkVersion();
+ String appCompatMainVersion = compileSdkVersion;
// TODO(145548476): convert to androidx
try {
if (Integer.parseInt(appCompatMainVersion) < 29) {
@@ -242,7 +253,7 @@ public class AndroidGradleTests {
}
contents = updateBuildToolsVersion(contents);
- contents = updateCompileSdkVersion(contents);
+ contents = updateCompileSdkVersion(contents, compileSdkVersion);
contents = updateTargetSdkVersion(contents);
contents = updateMinSdkVersionOnlyIfGreaterThanExisting(contents, "minSdkVersion[ (](\\d+)");
contents = updateMinSdkVersionOnlyIfGreaterThanExisting(contents, "minSdk *= *(\\d+)");
@@ -266,6 +277,9 @@ public class AndroidGradleTests {
if (kotlinVersion == null) {
kotlinVersion = KOTLIN_VERSION_FOR_TESTS;
}
+ if (compileSdkVersion == null) {
+ compileSdkVersion = buildEnvironment.getCompileSdkVersion();
+ }
String pluginVersion = gradlePluginVersion != null ? gradlePluginVersion : buildEnvironment.getGradlePluginVersion();
contents = replaceRegexGroup(contents, "classpath\\(['\"]com.android.tools.build:gradle:(.+)['\"]", pluginVersion);
@@ -282,8 +296,8 @@ public class AndroidGradleTests {
contents = replaceRegexGroup(contents, "\\(\"com.android.application\"\\) version \"(.+)\"", pluginVersion);
contents = replaceRegexGroup(contents, "\\(\"com.android.library\"\\) version \"(.+)\"", pluginVersion);
contents = replaceRegexGroup(contents, "buildToolsVersion\\(\"(.+)\"\\)", buildEnvironment.getBuildToolsVersion());
- contents = replaceRegexGroup(contents, "compileSdkVersion\\((.+)\\)", buildEnvironment.getCompileSdkVersion());
- contents = replaceRegexGroup(contents, "compileSdk *= *(\\d+)", buildEnvironment.getCompileSdkVersion());
+ contents = replaceRegexGroup(contents, "compileSdkVersion\\((.+)\\)", compileSdkVersion);
+ contents = replaceRegexGroup(contents, "compileSdk *= *(\\d+)", compileSdkVersion);
contents = replaceRegexGroup(contents, "targetSdkVersion\\((.+)\\)", buildEnvironment.getTargetSdkVersion());
contents = replaceRegexGroup(contents, "targetSdk *= *(\\d+)", buildEnvironment.getTargetSdkVersion());
contents = updateMinSdkVersionOnlyIfGreaterThanExisting(contents, "minSdkVersion[ (](\\d+)");
@@ -307,9 +321,9 @@ public class AndroidGradleTests {
}
@NotNull
- public static String updateCompileSdkVersion(@NotNull String contents) {
- contents = replaceRegexGroup(contents, "compileSdkVersion[ (]([0-9]+)", BuildEnvironment.getInstance().getCompileSdkVersion());
- contents = replaceRegexGroup(contents, "compileSdk *[(=]? *([0-9]+)", BuildEnvironment.getInstance().getCompileSdkVersion());
+ public static String updateCompileSdkVersion(@NotNull String contents, @NotNull String compileSdkVersion) {
+ contents = replaceRegexGroup(contents, "compileSdkVersion[ (]([0-9]+)", compileSdkVersion);
+ contents = replaceRegexGroup(contents, "compileSdk *[(=]? *([0-9]+)", compileSdkVersion);
return contents;
}
@@ -573,7 +587,8 @@ public class AndroidGradleTests {
Sdk currentJdk = ideSdks.getJdk();
TestCase.assertNotNull(currentJdk);
- TestCase.assertTrue("JDK 8 is required. Found: " + currentJdk.getHomePath(), IdeSdks.getInstance().isJdkCompatible(currentJdk, JDK_1_8));
+ TestCase.assertTrue("JDK 8 is required. Found: " + currentJdk.getHomePath(),
+ IdeSdks.getInstance().isJdkCompatible(currentJdk, JDK_1_8));
// IntelliJ uses project jdk for gradle import by default, see GradleProjectSettings.myGradleJvm
// Android Studio overrides GradleInstallationManager.getGradleJdk() using AndroidStudioGradleInstallationManager
@@ -675,10 +690,11 @@ public class AndroidGradleTests {
@Nullable String gradlePluginVersion,
@Nullable String kotlinVersion,
@Nullable String ndkVersion,
+ @Nullable String compileSdkVersion,
File... localRepos) throws IOException {
preCreateDotGradle(projectRoot);
// Update dependencies to latest, and possibly repository URL too if android.mavenRepoUrl is set
- updateToolingVersionsAndPaths(projectRoot, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion, localRepos);
+ updateToolingVersionsAndPaths(projectRoot, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion, compileSdkVersion, localRepos);
}
/**
diff --git a/android-uitests/testSrc/com/android/tools/idea/tests/gui/newpsd/PsdGuiTestRule.kt b/android-uitests/testSrc/com/android/tools/idea/tests/gui/newpsd/PsdGuiTestRule.kt
index 405a2641fef..195332f4c63 100644
--- a/android-uitests/testSrc/com/android/tools/idea/tests/gui/newpsd/PsdGuiTestRule.kt
+++ b/android-uitests/testSrc/com/android/tools/idea/tests/gui/newpsd/PsdGuiTestRule.kt
@@ -22,6 +22,6 @@ import java.io.File
class PsdGuiTestRule : GuiTestRule() {
override fun updateGradleVersions(projectPath: File) {
val testRepositoryPath = getMasterProjectDirPath("psdSampleRepo")
- AndroidGradleTests.updateToolingVersionsAndPaths(projectPath, null, null, null, null, testRepositoryPath)
+ AndroidGradleTests.updateToolingVersionsAndPaths(projectPath, null, null, null, null, null, testRepositoryPath)
}
}
diff --git a/android/testSrc/com/android/tools/idea/gradle/project/sync/GradleSyncIntegrationTest.java b/android/testSrc/com/android/tools/idea/gradle/project/sync/GradleSyncIntegrationTest.java
index 87792721198..26025b6ffa4 100644
--- a/android/testSrc/com/android/tools/idea/gradle/project/sync/GradleSyncIntegrationTest.java
+++ b/android/testSrc/com/android/tools/idea/gradle/project/sync/GradleSyncIntegrationTest.java
@@ -329,7 +329,7 @@ public final class GradleSyncIntegrationTest extends GradleSyncIntegrationTestCa
GradleSyncMessagesStub syncMessages = GradleSyncMessagesStub.replaceSyncMessagesService(project);
// DEPENDENT_MODULES project has two modules, app and lib, app module has dependency on lib module.
- prepareProjectForImport(DEPENDENT_MODULES, null, null, null, null);
+ prepareProjectForImport(DEPENDENT_MODULES, null, null, null, null, null);
// Define new buildType qa in app module.
// This causes sync issues, because app depends on lib module, but lib module doesn't have buildType qa.
File appBuildFile = getBuildFilePath("app");
@@ -747,7 +747,7 @@ public final class GradleSyncIntegrationTest extends GradleSyncIntegrationTestCa
}
public void testUnresolvedDependency() throws Exception {
- prepareProjectForImport(SIMPLE_APPLICATION_UNRESOLVED_DEPENDENCY, null, null, null, null);
+ prepareProjectForImport(SIMPLE_APPLICATION_UNRESOLVED_DEPENDENCY, null, null, null, null, null);
GradleSyncMessagesStub syncMessages = GradleSyncMessagesStub.replaceSyncMessagesService(getProject());
Project project = getProject();
diff --git a/android/testSrc/com/android/tools/idea/gradle/project/sync/perf/GradleSyncPerfTest.java b/android/testSrc/com/android/tools/idea/gradle/project/sync/perf/GradleSyncPerfTest.java
index 29992e050f4..83e666bbd51 100644
--- a/android/testSrc/com/android/tools/idea/gradle/project/sync/perf/GradleSyncPerfTest.java
+++ b/android/testSrc/com/android/tools/idea/gradle/project/sync/perf/GradleSyncPerfTest.java
@@ -117,6 +117,7 @@ public class GradleSyncPerfTest extends AndroidGradleTestCase {
@Nullable String gradlePluginVersion,
@Nullable String kotlinVersion,
@Nullable String ndkVersion,
+ @Nullable String compileSdkVersion,
File... localRepos)
throws IOException {
// Override settings just for tests (e.g. sdk.dir)
diff --git a/android/testSrc/com/android/tools/idea/gradle/structure/model/PsModuleCollectionTest.kt b/android/testSrc/com/android/tools/idea/gradle/structure/model/PsModuleCollectionTest.kt
index abc6aa569bd..5249468b273 100644
--- a/android/testSrc/com/android/tools/idea/gradle/structure/model/PsModuleCollectionTest.kt
+++ b/android/testSrc/com/android/tools/idea/gradle/structure/model/PsModuleCollectionTest.kt
@@ -44,8 +44,9 @@ class PsModuleCollectionTest : DependencyTestCase() {
graldePluginVersion: String?,
kotlinVersion: String?,
ndkVersion: String?,
+ compileSdk: String?,
vararg localRepos: File) {
- AndroidGradleTests.defaultPatchPreparedProject(projectRoot, gradleVersion, graldePluginVersion, kotlinVersion, ndkVersion, *localRepos)
+ AndroidGradleTests.defaultPatchPreparedProject(projectRoot, gradleVersion, graldePluginVersion, kotlinVersion, ndkVersion, compileSdk, *localRepos)
synchronizeTempDirVfs(project.baseDir)
patchProject?.run {
ApplicationManager.getApplication().runWriteAction {
diff --git a/compose-designer/testSrc/com/android/tools/idea/compose/gradle/BuildTest.kt b/compose-designer/testSrc/com/android/tools/idea/compose/gradle/BuildTest.kt
index 0350389ceb2..eee57d60ba7 100644
--- a/compose-designer/testSrc/com/android/tools/idea/compose/gradle/BuildTest.kt
+++ b/compose-designer/testSrc/com/android/tools/idea/compose/gradle/BuildTest.kt
@@ -99,7 +99,7 @@ class BuildTest {
val simpleComposableAppPath = projectRule.resolveTestDataPath(SIMPLE_COMPOSE_PROJECT_PATH)
val destination = File(projectRoot, "SimpleComposeApplication")
FileUtil.copyDir(simpleComposableAppPath, destination)
- defaultPatchPreparedProject(File(projectRule.project.basePath!!), null, null, DEFAULT_KOTLIN_VERSION, null, *listOf<File>().toTypedArray())
+ defaultPatchPreparedProject(File(projectRule.project.basePath!!), null, null, DEFAULT_KOTLIN_VERSION, null, null, *listOf<File>().toTypedArray())
})
val project = projectRule.project
val activityFile = VfsUtil.findRelativeFile("SimpleComposeApplication/${SimpleComposeAppPaths.APP_MAIN_ACTIVITY.path}",
diff --git a/old-agp-tests/BUILD b/old-agp-tests/BUILD
index ba04d77c0ce..0f4007083d6 100644
--- a/old-agp-tests/BUILD
+++ b/old-agp-tests/BUILD
@@ -26,7 +26,6 @@ iml_module(
"//prebuilts/studio/sdk:ndk",
"//prebuilts/studio/sdk:platform-tools",
"//prebuilts/studio/sdk:platforms/android-28",
- "//prebuilts/studio/sdk:platforms/latest",
"//prebuilts/studio/sdk:platforms/latest-preview",
"//prebuilts/studio/sdk:sources",
"//prebuilts/tools/common/m2:org.jetbrains.kotlin.kotlin-gradle-plugin.1.5.21",
diff --git a/old-agp-tests/agp_versions.bzl b/old-agp-tests/agp_versions.bzl
index 572e5d3a07b..18b98eb6a3e 100644
--- a/old-agp-tests/agp_versions.bzl
+++ b/old-agp-tests/agp_versions.bzl
@@ -13,7 +13,6 @@ COMMON_DATA = [
"//prebuilts/studio/sdk:licenses",
"//prebuilts/studio/sdk:ndk",
"//prebuilts/studio/sdk:platform-tools",
- "//prebuilts/studio/sdk:platforms/latest",
"//prebuilts/studio/sdk:sources",
"//tools/adt/idea/android/annotations",
"//tools/adt/idea/android/lib:sampleData",
@@ -54,19 +53,47 @@ AGP_MAVEN_REPOS = {
}
AGP_DATA = {
- AGP_3_1_4: ["//prebuilts/studio/sdk:build-tools/28.0.3"],
- AGP_3_3_2: ["//prebuilts/studio/sdk:build-tools/28.0.3"],
+ AGP_3_1_4: [
+ "//prebuilts/studio/sdk:build-tools/28.0.3",
+ "//prebuilts/studio/sdk:platforms/android-32",
+ ],
+ AGP_3_3_2: [
+ "//prebuilts/studio/sdk:build-tools/28.0.3",
+ "//prebuilts/studio/sdk:platforms/android-32",
+ ],
AGP_3_5: [
"//prebuilts/studio/sdk:build-tools/28.0.3",
"//prebuilts/studio/sdk:platforms/android-28",
+ "//prebuilts/studio/sdk:platforms/android-32",
+ ],
+ AGP_4_0: [
+ "//prebuilts/studio/sdk:build-tools/29.0.2",
+ "//prebuilts/studio/sdk:platforms/android-32",
+ ],
+ AGP_4_1: [
+ "//prebuilts/studio/sdk:build-tools/29.0.2",
+ "//prebuilts/studio/sdk:platforms/android-32",
+ ],
+ AGP_4_2: [
+ "//prebuilts/studio/sdk:build-tools/30.0.2",
+ "//prebuilts/studio/sdk:platforms/android-32",
+ ],
+ AGP_7_0: [
+ "//prebuilts/studio/sdk:build-tools/30.0.2",
+ "//prebuilts/studio/sdk:platforms/android-32",
+ ],
+ AGP_7_1: [
+ "//prebuilts/studio/sdk:build-tools/30.0.3",
+ "//prebuilts/studio/sdk:platforms/android-32",
+ ],
+ AGP_7_2: [
+ "//prebuilts/studio/sdk:build-tools/30.0.3",
+ "//prebuilts/studio/sdk:platforms/latest",
+ ],
+ AGP_7_3: [
+ "//prebuilts/studio/sdk:build-tools/30.0.3",
+ "//prebuilts/studio/sdk:platforms/latest",
],
- AGP_4_0: ["//prebuilts/studio/sdk:build-tools/29.0.2"],
- AGP_4_1: ["//prebuilts/studio/sdk:build-tools/29.0.2"],
- AGP_4_2: ["//prebuilts/studio/sdk:build-tools/30.0.2"],
- AGP_7_0: ["//prebuilts/studio/sdk:build-tools/30.0.2"],
- AGP_7_1: ["//prebuilts/studio/sdk:build-tools/30.0.2"],
- AGP_7_2: ["//prebuilts/studio/sdk:build-tools/30.0.2"],
- AGP_7_3: ["//prebuilts/studio/sdk:build-tools/30.0.3"],
}
GRADLE_LATEST = "LATEST"
diff --git a/project-system-gradle-upgrade/testSrc/com/android/tools/idea/gradle/project/upgrade/integration/ProjectsUpgradeTestBase.kt b/project-system-gradle-upgrade/testSrc/com/android/tools/idea/gradle/project/upgrade/integration/ProjectsUpgradeTestBase.kt
index ff1a3c9b316..8b4b7c029f0 100644
--- a/project-system-gradle-upgrade/testSrc/com/android/tools/idea/gradle/project/upgrade/integration/ProjectsUpgradeTestBase.kt
+++ b/project-system-gradle-upgrade/testSrc/com/android/tools/idea/gradle/project/upgrade/integration/ProjectsUpgradeTestBase.kt
@@ -139,7 +139,7 @@ open class ProjectsUpgradeTestBase {
FileUtils.copyFile(source, target)
// Update dependencies to latest, and possibly repository URL too if android.mavenRepoUrl is set
AndroidGradleTests.updateToolingVersionsAndPaths(target, testProject.gradleVersion(), testProject.agpVersion(),
- testProject.kotlinVersion(), testProject.ndkVersion())
+ testProject.kotlinVersion(), testProject.ndkVersion(), null)
}
}
}
@@ -157,7 +157,7 @@ open class ProjectsUpgradeTestBase {
val baseGradleVersion = OldAgpSuite.GRADLE_VERSION?.takeIf { it != "LATEST" }
AndroidGradleTests.defaultPatchPreparedProject(
projectRoot, baseGradleVersion, expectedProjectState.agpVersion(), expectedProjectState.kotlinVersion(),
- expectedProjectState.ndkVersion())
+ expectedProjectState.ndkVersion(), null)
// Patch base project with files expected to change.
// Note: one could think that we only need to check these files instead of comparing all files recursively
// but checking all project files allows us to make sure no unexpected changes were made to any other not listed files.
diff --git a/project-system-gradle/testSrc/com/android/tools/idea/projectsystem/gradle/GradleModuleHierarchyProviderTest.kt b/project-system-gradle/testSrc/com/android/tools/idea/projectsystem/gradle/GradleModuleHierarchyProviderTest.kt
index 8161077d1df..0876a2496fd 100644
--- a/project-system-gradle/testSrc/com/android/tools/idea/projectsystem/gradle/GradleModuleHierarchyProviderTest.kt
+++ b/project-system-gradle/testSrc/com/android/tools/idea/projectsystem/gradle/GradleModuleHierarchyProviderTest.kt
@@ -47,7 +47,7 @@ class GradleModuleHierarchyProviderTest : AndroidGradleTestCase() {
fun testFirstSyncFailedStructure() {
- prepareProjectForImport(TestProjectPaths.SIMPLE_APPLICATION, null, null, null, null)
+ prepareProjectForImport(TestProjectPaths.SIMPLE_APPLICATION, null, null, null, null, null)
val buildFile = @Suppress("DEPRECATION") project.baseDir.findChild("build.gradle")!!
runWriteAction {
buildFile.setBinaryContent("*** this is an error ***".toByteArray())
diff --git a/uitest-framework/testSrc/com/android/tools/idea/tests/gui/framework/GuiTestRule.java b/uitest-framework/testSrc/com/android/tools/idea/tests/gui/framework/GuiTestRule.java
index f45b59464e8..f9ca7d56195 100755
--- a/uitest-framework/testSrc/com/android/tools/idea/tests/gui/framework/GuiTestRule.java
+++ b/uitest-framework/testSrc/com/android/tools/idea/tests/gui/framework/GuiTestRule.java
@@ -504,7 +504,7 @@ public class GuiTestRule implements TestRule {
}
protected void updateGradleVersions(@NotNull File projectPath) throws IOException {
- AndroidGradleTests.updateToolingVersionsAndPaths(projectPath, null, null, null, null);
+ AndroidGradleTests.updateToolingVersionsAndPaths(projectPath, null, null, null, null, null);
}
protected void updateGradleVersions(@NotNull File projectPath,
@@ -513,7 +513,7 @@ public class GuiTestRule implements TestRule {
@Nullable String kotlinVersion,
@Nullable String ndkVersion
) throws IOException {
- AndroidGradleTests.updateToolingVersionsAndPaths(projectPath, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion);
+ AndroidGradleTests.updateToolingVersionsAndPaths(projectPath, gradleVersion, gradlePluginVersion, kotlinVersion, ndkVersion,null);
}
@NotNull