diff options
author | Yuriy Solodkyy <solodkyy@google.com> | 2022-08-17 18:25:20 +0100 |
---|---|---|
committer | TreeHugger Robot <treehugger-gerrit@google.com> | 2022-08-17 19:03:26 +0000 |
commit | eccf1a55fa0fc21eed672662f375a7f57a2d707b (patch) | |
tree | 9f2fbb10e9bf27a4ca5e83f0036108132d37f44d | |
parent | a7fd14e3beccf613519809993993f439245a5fe2 (diff) | |
download | idea-eccf1a55fa0fc21eed672662f375a7f57a2d707b.tar.gz |
Support expected sync errors in integration tests
Bug: n/a
Test: n/a
Change-Id: Iafcb6f6f5aa35e0fc7e0902ba07478162bfe5097
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 +} |