Added prop to suppress all bp plugin warnings
Test: ./gradlew :benchmark:benchmark-baseline-profile-gradle-plugin:test
Bug: 349646646
Relnote: "Added gradle property
androidx.baselineprofile.suppressWarnings to
suppress all baseline profile warnings"
Change-Id: I7c36e3a0da43aa113394404215725b9c86b46cd5
diff --git a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/AgpPlugin.kt b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/AgpPlugin.kt
index 29f7c75..8638ad0 100644
--- a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/AgpPlugin.kt
+++ b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/AgpPlugin.kt
@@ -58,6 +58,10 @@
} ?: return@lazy null
}
+ val suppressWarnings: Boolean by lazy {
+ project.providers.gradleProperty("androidx.baselineprofile.suppresswarnings").isPresent
+ }
+
// Logger
protected val logger = BaselineProfilePluginLogger(project.logger)
@@ -100,6 +104,14 @@
private fun configureWithAndroidPlugin() {
+ fun setWarnings() {
+ if (suppressWarnings) {
+ logger.suppressAllWarnings()
+ } else {
+ getWarnings()?.let { warnings -> logger.setWarnings(warnings) }
+ }
+ }
+
onBeforeFinalizeDsl()
testAndroidComponentExtension()?.let { testComponent ->
@@ -108,7 +120,7 @@
// This can be done only here, since warnings may depend on user configuration
// that is ready only after `finalizeDsl`.
- getWarnings()?.let { warnings -> logger.setWarnings(warnings) }
+ setWarnings()
checkAgpVersion()
}
testComponent.beforeVariants { onTestBeforeVariants(it) }
@@ -124,7 +136,7 @@
// This can be done only here, since warnings may depend on user configuration
// that is ready only after `finalizeDsl`.
- getWarnings()?.let { warnings -> logger.setWarnings(warnings) }
+ setWarnings()
checkAgpVersion()
}
applicationComponent.beforeVariants { onApplicationBeforeVariants(it) }
@@ -140,7 +152,7 @@
// This can be done only here, since warnings may depend on user configuration
// that is ready only after `finalizeDsl`.
- getWarnings()?.let { warnings -> logger.setWarnings(warnings) }
+ setWarnings()
checkAgpVersion()
}
libraryComponent.beforeVariants { onLibraryBeforeVariants(it) }
diff --git a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/BaselineProfilePluginLogger.kt b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/BaselineProfilePluginLogger.kt
index f41bbb1..daebf6e 100644
--- a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/BaselineProfilePluginLogger.kt
+++ b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/BaselineProfilePluginLogger.kt
@@ -31,21 +31,28 @@
maxAgpVersion = false
}
+ private var suppressAllWarnings: Boolean = false
+
fun setWarnings(warnings: Warnings) {
this.warnings = warnings
}
+ fun suppressAllWarnings() {
+ suppressAllWarnings = true
+ }
+
fun debug(message: String) = logger.debug(message)
fun info(message: String) = logger.info(message)
fun warn(property: Warnings.() -> (Boolean), propertyName: String?, message: String) {
+ if (suppressAllWarnings) return
if (property(warnings)) {
logger.warn(message)
if (propertyName != null) {
logger.warn(
"""
-
+
This warning can be disabled setting the following property:
baselineProfile {
warnings {
diff --git a/benchmark/baseline-profile-gradle-plugin/src/test/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPluginTest.kt b/benchmark/baseline-profile-gradle-plugin/src/test/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPluginTest.kt
index e4f5538..736c8a4 100644
--- a/benchmark/baseline-profile-gradle-plugin/src/test/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPluginTest.kt
+++ b/benchmark/baseline-profile-gradle-plugin/src/test/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPluginTest.kt
@@ -1501,6 +1501,46 @@
}
@Test
+ fun testSuppressWarningWithProperty() {
+ val requiredLines =
+ listOf(
+ "This version of the Baseline Profile Gradle Plugin was tested with versions below",
+ // We skip the lines in between because they may contain changing version numbers.
+ "baselineProfile {",
+ " warnings {",
+ " maxAgpVersion = false",
+ " }",
+ "}"
+ )
+
+ projectSetup.consumer.setup(androidPlugin = ANDROID_APPLICATION_PLUGIN)
+ projectSetup.producer.setupWithoutFlavors(
+ releaseProfileLines = listOf(Fixtures.CLASS_1_METHOD_1, Fixtures.CLASS_1),
+ )
+
+ val gradleCmds =
+ arrayOf(
+ "generateBaselineProfile",
+ "-Pandroidx.benchmark.test.maxagpversion=1.0.0",
+ )
+
+ // Run with no suppress warnings property
+ projectSetup.consumer.gradleRunner.build(*gradleCmds) {
+ val notFound = it.lines().requireInOrder(*requiredLines.toTypedArray())
+ assertThat(notFound).isEmpty()
+ }
+
+ // Run with suppress warnings property
+ projectSetup.consumer.gradleRunner.build(
+ *gradleCmds,
+ "-Pandroidx.baselineprofile.suppresswarnings"
+ ) {
+ val notFound = it.lines().requireInOrder(*requiredLines.toTypedArray())
+ assertThat(notFound).isEqualTo(requiredLines)
+ }
+ }
+
+ @Test
fun testMergeArtAndStartupProfilesShouldDependOnProfileGeneration() {
projectSetup.producer.setupWithFreeAndPaidFlavors(
freeReleaseProfileLines = listOf(Fixtures.CLASS_1_METHOD_1, Fixtures.CLASS_1),