diff --git a/project-system-gradle/src/com/android/tools/idea/gradle/project/build/invoker/GradleBuildInvokerImpl.kt b/project-system-gradle/src/com/android/tools/idea/gradle/project/build/invoker/GradleBuildInvokerImpl.kt index 0f12ea353d10..f1ba1da2dd71 100644 --- a/project-system-gradle/src/com/android/tools/idea/gradle/project/build/invoker/GradleBuildInvokerImpl.kt +++ b/project-system-gradle/src/com/android/tools/idea/gradle/project/build/invoker/GradleBuildInvokerImpl.kt @@ -502,7 +502,9 @@ class GradleBuildInvokerImpl @NonInjectable @VisibleForTesting internal construc if (startBuildEventPosted) { val title = "$executionName failed" val dataContext: DataContext = BuildConsoleUtils.getDataContext(id, buildViewManager) - val failureResult: FailureResult = ExternalSystemUtil.createFailureResult(title, e, GRADLE_SYSTEM_ID, project, dataContext) + val failureResult: FailureResult = ExternalSystemUtil.createFailureResult( + title, e, GRADLE_SYSTEM_ID, project, request.rootProjectPath.absolutePath, dataContext + ) buildEventDispatcher.onEvent(id, FinishBuildEventImpl(id, null, System.currentTimeMillis(), "failed", failureResult)) } super.onFailure(id, e) diff --git a/project-system-gradle/src/com/android/tools/idea/gradle/service/notification/GradleJvmNotificationExtension.kt b/project-system-gradle/src/com/android/tools/idea/gradle/service/notification/GradleJvmNotificationExtension.kt index 8a482cd05466..4e1d25c3501b 100644 --- a/project-system-gradle/src/com/android/tools/idea/gradle/service/notification/GradleJvmNotificationExtension.kt +++ b/project-system-gradle/src/com/android/tools/idea/gradle/service/notification/GradleJvmNotificationExtension.kt @@ -161,8 +161,8 @@ class GradleJvmNotificationExtension: GradleNotificationExtension() { } } - override fun customize(notificationData: NotificationData, project: Project, error: Throwable?) { - super.customize(notificationData, project, error) + override fun customize(notificationData: NotificationData, project: Project, externalProjectPath: String, error: Throwable?) { + super.customize(notificationData, project, externalProjectPath, error) val expectedPrefix = GradleBundle.message("gradle.jvm.is.invalid") if (notificationData.message.startsWith(expectedPrefix)) { val ideSdks = IdeSdks.getInstance() diff --git a/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/errors/DexDisabledIssueCheckerIntegrationTest.kt b/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/errors/DexDisabledIssueCheckerIntegrationTest.kt index 1c962e92d322..76e501d39dd1 100644 --- a/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/errors/DexDisabledIssueCheckerIntegrationTest.kt +++ b/project-system-gradle/testSrc/com/android/tools/idea/gradle/project/sync/errors/DexDisabledIssueCheckerIntegrationTest.kt @@ -29,6 +29,7 @@ import com.intellij.testFramework.replaceService import org.jetbrains.plugins.gradle.issue.GradleIssueChecker.Companion.getKnownIssuesCheckList import org.junit.Test import org.mockito.ArgumentCaptor +import org.mockito.ArgumentMatchers.anyString import org.mockito.ArgumentMatchers.eq import org.mockito.Mockito.any import org.mockito.Mockito.spy @@ -70,7 +71,7 @@ class DexDisabledIssueCheckerIntegrationTest: AndroidGradleTestCase() { assertThat(result.invocations.firstOrNull()?.buildError).isNotNull() // and that error generates the expected BuildIssue val throwableCaptor = ArgumentCaptor.forClass(Throwable::class.java) - verify(spyNotificationManager).createNotification(any(), throwableCaptor.capture(), any(), eq(project), any()) + verify(spyNotificationManager).createNotification(any(), throwableCaptor.capture(), any(), eq(project), anyString(), any()) val generatedExceptions = throwableCaptor.allValues assertThat(generatedExceptions).hasSize(1) assertThat(generatedExceptions[0]).isInstanceOf(BuildIssueException::class.java) diff --git a/project-system-gradle/testSrc/com/android/tools/idea/gradle/service/notification/GradleJvmNotificationExtensionTest.kt b/project-system-gradle/testSrc/com/android/tools/idea/gradle/service/notification/GradleJvmNotificationExtensionTest.kt index 742c4a6034f0..5bae0b7ea132 100644 --- a/project-system-gradle/testSrc/com/android/tools/idea/gradle/service/notification/GradleJvmNotificationExtensionTest.kt +++ b/project-system-gradle/testSrc/com/android/tools/idea/gradle/service/notification/GradleJvmNotificationExtensionTest.kt @@ -50,6 +50,7 @@ class GradleJvmNotificationExtensionTest { val gradleProjectRule = AndroidGradleProjectRule() private val gradleJvmExtension = GradleJvmNotificationExtension() + private val externalProjectPath = gradleProjectRule.project.basePath.orEmpty() @Before fun setUp() { @@ -70,7 +71,7 @@ class GradleJvmNotificationExtensionTest { "Change JDK location\n" assertThat(notificationData.registeredListenerIds).isEmpty() - gradleJvmExtension.customize(notificationData, gradleProjectRule.project, null) + gradleJvmExtension.customize(notificationData, gradleProjectRule.project, externalProjectPath, null) assertThat(notificationData.message).isEqualTo(expectedMessage) val newListeners = notificationData.registeredListenerIds assertThat(newListeners).contains("${baseId()}.embedded") @@ -90,7 +91,7 @@ class GradleJvmNotificationExtensionTest { "Change JDK location\n" assertThat(notificationData.registeredListenerIds).isEmpty() - gradleJvmExtension.customize(notificationData, gradleProjectRule.project, null) + gradleJvmExtension.customize(notificationData, gradleProjectRule.project, externalProjectPath, null) assertThat(notificationData.message).isEqualTo(expectedMessage) val newListeners = notificationData.registeredListenerIds assertThat(newListeners).contains("${baseId()}.embedded") @@ -113,7 +114,7 @@ class GradleJvmNotificationExtensionTest { assertThat(notificationData.registeredListenerIds).hasSize(3) val spyData = spy(notificationData) - gradleJvmExtension.customize(spyData, gradleProjectRule.project, null) + gradleJvmExtension.customize(spyData, gradleProjectRule.project, externalProjectPath, null) // Should not add new quickfixes nor modify the message if they are already there verify(spyData, never()).setListener(Mockito.any(), Mockito.any()) assertThat(notificationData.message).isEqualTo(originalMessage) @@ -127,7 +128,7 @@ class GradleJvmNotificationExtensionTest { assertThat(notificationData.registeredListenerIds).hasSize(0) val spyData = spy(notificationData) - gradleJvmExtension.customize(spyData, gradleProjectRule.project, null) + gradleJvmExtension.customize(spyData, gradleProjectRule.project, externalProjectPath, null) // Should not add new quickfixes nor modify the message if the error message does not start with "Invalid Gradle JDK..." verify(spyData, never()).setListener(Mockito.any(), Mockito.any()) assertThat(notificationData.message).isEqualTo(originalMessage) @@ -148,7 +149,7 @@ class GradleJvmNotificationExtensionTest { val spyIdeSdks = spy(IdeSdks.getInstance()) Mockito.doReturn(invalidReason).whenever(spyIdeSdks).generateInvalidJdkReason(Mockito.any()) ApplicationManager.getApplication().replaceService(IdeSdks::class.java, spyIdeSdks, gradleProjectRule.fixture.projectDisposable) - gradleJvmExtension.customize(notificationData, gradleProjectRule.project, null) + gradleJvmExtension.customize(notificationData, gradleProjectRule.project, externalProjectPath, null) assertThat(notificationData.message).isEqualTo(expectedMessage) val newListeners = notificationData.registeredListenerIds assertThat(newListeners).contains("${baseId()}.embedded")