diff --git a/modulecheck-core/src/test/kotlin/modulecheck/core/DisableViewBindingTest.kt b/modulecheck-core/src/test/kotlin/modulecheck/core/DisableViewBindingTest.kt index 8959ade0d4..2b0abc1cac 100644 --- a/modulecheck-core/src/test/kotlin/modulecheck/core/DisableViewBindingTest.kt +++ b/modulecheck-core/src/test/kotlin/modulecheck/core/DisableViewBindingTest.kt @@ -278,6 +278,85 @@ class DisableViewBindingTest : RunnerTest() { logger.parsedReport() shouldBe listOf() } + @Test + fun `ViewBinding from debug & release is used in main source set`() { + + val lib1 = androidLibrary(":lib1", "com.modulecheck.lib1") { + buildFile { + """ + plugins { + id("com.android.library") + kotlin("android") + } + + android { + buildFeatures.viewBinding = true + } + """ + } + addLayoutFile( + "fragment_lib1.xml", + """ + + """, + SourceSetName.DEBUG + ) + addLayoutFile( + "fragment_lib1.xml", + """ + + + + + """, + SourceSetName.RELEASE + ) + + // Setting a debug base package, but it's never used. The inferred FqName for the generated + // binding should still reflect the main source set even though it's evaluating a file in + // debug. + platformPlugin.manifests[SourceSetName.DEBUG] = projectDir + .child("src/debug/AndroidManifest.xml") + .createSafely("") + + addKotlinSource( + """ + package com.modulecheck.lib1 + + import com.modulecheck.lib1.databinding.FragmentLib1Binding + + val binding = FragmentLib1Binding() + """ + ) + } + + run( + autoCorrect = false + ).isSuccess shouldBe true + + lib1.buildFile shouldHaveText """ + plugins { + id("com.android.library") + kotlin("android") + } + + android { + buildFeatures.viewBinding = true + } + """ + + logger.parsedReport() shouldBe listOf() + } + @Test fun `ViewBinding from debug with different base package is used in debug source set`() { diff --git a/modulecheck-rule/impl/src/main/kotlin/modulecheck/rule/impl/DisableViewBindingRule.kt b/modulecheck-rule/impl/src/main/kotlin/modulecheck/rule/impl/DisableViewBindingRule.kt index 785b30cf86..df3c5faf3f 100644 --- a/modulecheck-rule/impl/src/main/kotlin/modulecheck/rule/impl/DisableViewBindingRule.kt +++ b/modulecheck-rule/impl/src/main/kotlin/modulecheck/rule/impl/DisableViewBindingRule.kt @@ -21,6 +21,7 @@ import modulecheck.api.context.referencesForSourceSetName import modulecheck.config.ModuleCheckSettings import modulecheck.finding.FindingName import modulecheck.finding.android.DisableViewBindingGenerationFinding +import modulecheck.parsing.gradle.model.SourceSetName import modulecheck.project.McProject import modulecheck.project.isAndroid import modulecheck.project.project @@ -52,7 +53,7 @@ class DisableViewBindingRule @Inject constructor() : DocumentedRule generatedBindings.any { generated ->