mirror of
https://github.com/Guardsquare/proguard.git
synced 2026-03-13 09:50:34 +08:00
Create collectConsumerRulesTask only when variant is configured
This commit is contained in:
committed by
maqsood ahmad
parent
6330b9eff9
commit
6cf1999f52
@@ -31,6 +31,7 @@ import java.io.File
|
||||
import org.gradle.api.GradleException
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.Task
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
@@ -68,29 +69,27 @@ class AndroidPlugin(private val androidExtension: BaseExtension) : Plugin<Projec
|
||||
|
||||
when (androidExtension) {
|
||||
is AppExtension -> androidExtension.applicationVariants.all { applicationVariant ->
|
||||
if (proguardBlock.configurations.hasVariantConfiguration(applicationVariant.name))
|
||||
verifyNotMinified(applicationVariant)
|
||||
|
||||
collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask(
|
||||
project,
|
||||
applicationVariant,
|
||||
createConsumerRulesConfiguration(project, applicationVariant),
|
||||
File("${project.buildDir}/intermediates/proguard/configs")))
|
||||
setupVariant(proguardBlock, applicationVariant, collectConsumerRulesTask, project)
|
||||
}
|
||||
is LibraryExtension -> androidExtension.libraryVariants.all { libraryVariant ->
|
||||
if (proguardBlock.configurations.hasVariantConfiguration(libraryVariant.name))
|
||||
verifyNotMinified(libraryVariant)
|
||||
|
||||
collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask(
|
||||
project,
|
||||
libraryVariant,
|
||||
createConsumerRulesConfiguration(project, libraryVariant),
|
||||
File("${project.buildDir}/intermediates/proguard/configs")))
|
||||
setupVariant(proguardBlock, libraryVariant, collectConsumerRulesTask, project)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupVariant(proguardBlock: ProGuardAndroidExtension, variant: BaseVariant, collectConsumerRulesTask: TaskProvider<Task>, project: Project) {
|
||||
if (proguardBlock.configurations.hasVariantConfiguration(variant.name)) {
|
||||
verifyNotMinified(variant)
|
||||
|
||||
collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask(
|
||||
project,
|
||||
variant,
|
||||
createConsumerRulesConfiguration(project, variant),
|
||||
File("${project.buildDir}/intermediates/proguard/configs")))
|
||||
}
|
||||
}
|
||||
|
||||
private fun createCollectConsumerRulesTask(
|
||||
project: Project,
|
||||
variant: BaseVariant,
|
||||
|
||||
@@ -9,6 +9,7 @@ package proguard.gradle
|
||||
|
||||
import io.kotest.core.spec.style.FreeSpec
|
||||
import io.kotest.matchers.file.shouldExist
|
||||
import io.kotest.matchers.file.shouldNotExist
|
||||
import io.kotest.matchers.shouldBe
|
||||
import io.kotest.matchers.string.shouldContain
|
||||
import io.kotest.matchers.string.shouldNotContain
|
||||
@@ -22,7 +23,7 @@ import testutils.createTestKitDir
|
||||
class ConsumerRulesCollectionTest : FreeSpec({
|
||||
val testKitDir = createTestKitDir()
|
||||
|
||||
"Given an Android project" - {
|
||||
"Given an Android project with one configured variant" - {
|
||||
val project = autoClose(AndroidProject().apply {
|
||||
addModule(applicationModule("app", buildDotGradle = """
|
||||
plugins {
|
||||
@@ -68,14 +69,14 @@ class ConsumerRulesCollectionTest : FreeSpec({
|
||||
}
|
||||
|
||||
"When the tasks 'clean' and 'collectConsumerRulesDebug' are executed " - {
|
||||
val result = createGradleRunner(project.rootDir, testKitDir, "clean", "collectConsumerRulesDebug").build()
|
||||
val result = createGradleRunner(project.rootDir, testKitDir, "clean", "collectConsumerRulesDebug").buildAndFail()
|
||||
|
||||
"Then the task 'collectConsumerRulesDebug' is successful" {
|
||||
result.task(":app:collectConsumerRulesDebug")?.outcome shouldBe TaskOutcome.SUCCESS
|
||||
"Then the task 'collectConsumerRulesDebug' is not executed" {
|
||||
result.task(":app:collectConsumerRulesDebug")?.outcome shouldBe null
|
||||
}
|
||||
|
||||
"Then a subdirectory of the build directory should contain the consumer rules" {
|
||||
File("${project.rootDir}/app/build/intermediates/proguard/configs/debug/consumer-rules.pro").shouldExist()
|
||||
"Then a subdirectory of the build directory should not contain the consumer rules" {
|
||||
File("${project.rootDir}/app/build/intermediates/proguard/configs/debug/consumer-rules.pro").shouldNotExist()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user