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")