summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuriy Solodkyy <solodkyy@google.com>2022-08-17 18:25:20 +0100
committerTreeHugger Robot <treehugger-gerrit@google.com>2022-08-17 19:03:26 +0000
commiteccf1a55fa0fc21eed672662f375a7f57a2d707b (patch)
tree9f2fbb10e9bf27a4ca5e83f0036108132d37f44d
parenta7fd14e3beccf613519809993993f439245a5fe2 (diff)
downloadidea-eccf1a55fa0fc21eed672662f375a7f57a2d707b.tar.gz
Support expected sync errors in integration tests
Bug: n/a Test: n/a Change-Id: Iafcb6f6f5aa35e0fc7e0902ba07478162bfe5097
-rw-r--r--android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestUtils.kt9
-rw-r--r--old-agp-tests/testSrc/com/android/tools/idea/gradle/project/sync/SyncWithUnsupportedAGPPluginTest.java13
-rw-r--r--project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/SyncScenariosIntegrationTest.kt8
-rw-r--r--project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/snapshots/SyncedProjectTest.kt1
-rw-r--r--project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/snapshots/TestProject.kt6
5 files changed, 27 insertions, 10 deletions
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 772b1e9a12d..2c700d1f1d0 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
@@ -95,6 +95,7 @@ import com.android.tools.idea.gradle.project.sync.idea.data.service.AndroidProje
import com.android.tools.idea.gradle.project.sync.idea.setupAndroidContentEntriesPerSourceSet
import com.android.tools.idea.gradle.project.sync.idea.setupAndroidDependenciesForMpss
import com.android.tools.idea.gradle.project.sync.idea.setupCompilerOutputPaths
+import com.android.tools.idea.gradle.project.sync.issues.SyncIssues
import com.android.tools.idea.gradle.project.sync.issues.SyncIssues.Companion.syncIssues
import com.android.tools.idea.gradle.util.GradleProjects
import com.android.tools.idea.gradle.util.GradleUtil.GRADLE_SYSTEM_ID
@@ -1917,14 +1918,15 @@ fun prepareGradleProject(projectSourceRoot: File, projectPath: File, projectPatc
}
data class OpenPreparedProjectOptions @JvmOverloads constructor(
- val verifyOpened: (Project) -> Unit = ::verifySyncedSuccessfully,
+ val expectedSyncIssues: Set<Int> = emptySet(),
+ val verifyOpened: (Project) -> Unit = { verifySyncedSuccessfully(it, expectedSyncIssues) },
val outputHandler: (Project.(String) -> Unit)? = null,
val syncExceptionHandler: (Project.(Exception) -> Unit)? = { e ->
println(e.message)
e.printStackTrace()
},
val subscribe: (MessageBusConnection) -> Unit = {},
- val disableKtsRelatedIndexing: Boolean = false
+ val disableKtsRelatedIndexing: Boolean = false,
)
/**
@@ -2047,7 +2049,7 @@ private fun <T> openPreparedProject(
fun GradleIntegrationTest.nameToPath(name: String) =
File(toSystemDependentName(getBaseTestPath() + "/" + name))
-private fun verifySyncedSuccessfully(project: Project) {
+private fun verifySyncedSuccessfully(project: Project, expectedSyncIssues: Set<Int> = emptySet()) {
val lastSyncResult = project.getProjectSystem().getSyncManager().getLastSyncResult()
if (!lastSyncResult.isSuccessful) {
throw IllegalStateException(lastSyncResult.name)
@@ -2058,6 +2060,7 @@ private fun verifySyncedSuccessfully(project: Project) {
.modules
.flatMap { it.syncIssues() }
.filter { it.severity == SyncIssue.SEVERITY_ERROR }
+ .filter { it.type !in expectedSyncIssues }
if (errors.isNotEmpty()) {
throw IllegalStateException(
errors.joinToString(separator = "\n") {
diff --git a/old-agp-tests/testSrc/com/android/tools/idea/gradle/project/sync/SyncWithUnsupportedAGPPluginTest.java b/old-agp-tests/testSrc/com/android/tools/idea/gradle/project/sync/SyncWithUnsupportedAGPPluginTest.java
index fc58ed1c4e7..af2456906c4 100644
--- a/old-agp-tests/testSrc/com/android/tools/idea/gradle/project/sync/SyncWithUnsupportedAGPPluginTest.java
+++ b/old-agp-tests/testSrc/com/android/tools/idea/gradle/project/sync/SyncWithUnsupportedAGPPluginTest.java
@@ -20,6 +20,7 @@ import static com.android.tools.idea.testing.AndroidGradleTestUtilsKt.prepareGra
import static com.android.tools.idea.testing.TestProjectPaths.SIMPLE_APPLICATION;
import static com.google.common.truth.Truth.assertThat;
import static java.util.Collections.emptyList;
+import static java.util.Collections.emptySet;
import static org.junit.Assert.assertTrue;
import com.android.testutils.junit4.OldAgpTest;
@@ -48,10 +49,14 @@ public class SyncWithUnsupportedAGPPluginTest implements GradleIntegrationTest {
String[] exceptionTest = new String[1];
prepareGradleProject(this, SIMPLE_APPLICATION, "root", "5.3.1", "3.1.4");
openPreparedProject(this, "root",
- new OpenPreparedProjectOptions(project -> null, (project, string) -> null, (project, e) -> {
- exceptionTest[0] = e.getMessage();
- return null;
- } )
+ new OpenPreparedProjectOptions(
+ emptySet(),
+ project -> null,
+ (project, string) -> null,
+ (project, e) -> {
+ exceptionTest[0] = e.getMessage();
+ return null;
+ })
, project -> null);
assertThat(exceptionTest[0]).contains("The project is using an incompatible version (AGP 3.1.4) of the Android " +
"Gradle plugin. Minimum supported version is AGP 3.2.0.");
diff --git a/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/SyncScenariosIntegrationTest.kt b/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/SyncScenariosIntegrationTest.kt
index 617c497a8a2..1324551e066 100644
--- a/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/SyncScenariosIntegrationTest.kt
+++ b/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/SyncScenariosIntegrationTest.kt
@@ -219,7 +219,13 @@ class SyncScenariosIntegrationTest : GradleIntegrationTest {
}
""".trimIndent())
- openPreparedProject("project", OpenPreparedProjectOptions({ }, { }, { fail() })) { project ->
+ openPreparedProject(
+ "project",
+ OpenPreparedProjectOptions(
+ verifyOpened = { },
+ outputHandler = { },
+ syncExceptionHandler = { fail() }
+ )) { project ->
val abis = GradleAndroidModel.get(project.findAppModule())!!.supportedAbis
assertThat(abis).containsExactly(Abi.X86)
}
diff --git a/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/snapshots/SyncedProjectTest.kt b/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/snapshots/SyncedProjectTest.kt
index a9b51f2f330..499092a6006 100644
--- a/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/snapshots/SyncedProjectTest.kt
+++ b/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/snapshots/SyncedProjectTest.kt
@@ -288,6 +288,7 @@ abstract class SyncedProjectTest(
fun run(): List<Throwable> {
return preparedProject.open(
options = OpenPreparedProjectOptions(
+ expectedSyncIssues = testProject.expectedSyncIssues,
disableKtsRelatedIndexing = true
)
) { project ->
diff --git a/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/snapshots/TestProject.kt b/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/snapshots/TestProject.kt
index aabc1ba9a07..3f56c95e853 100644
--- a/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/snapshots/TestProject.kt
+++ b/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/snapshots/TestProject.kt
@@ -17,6 +17,7 @@ package com.android.tools.idea.gradle.project.sync.snapshots
import com.android.SdkConstants
import com.android.SdkConstants.FN_SETTINGS_GRADLE
+import com.android.builder.model.v2.ide.SyncIssue
import com.android.testutils.AssumeUtil.assumeNotWindows
import com.android.tools.idea.gradle.project.GradleExperimentalSettings
import com.android.tools.idea.sdk.IdeSdks
@@ -55,7 +56,8 @@ enum class TestProject(
val testName: String? = null,
val isCompatibleWith: (AgpVersionSoftwareEnvironmentDescriptor) -> Boolean = { true },
val setup: () -> () -> Unit = { {} },
- val patch: AgpVersionSoftwareEnvironmentDescriptor.(projectRoot: File) -> Unit = {}
+ val patch: AgpVersionSoftwareEnvironmentDescriptor.(projectRoot: File) -> Unit = {},
+ val expectedSyncIssues: Set<Int> = emptySet()
) {
APP_WITH_ML_MODELS(TestProjectToSnapshotPaths.APP_WITH_ML_MODELS),
APP_WITH_BUILDSRC(TestProjectToSnapshotPaths.APP_WITH_BUILDSRC),
@@ -498,4 +500,4 @@ fun GradleIntegrationTest.prepareTestProject(
}
}
}
-} \ No newline at end of file
+}