Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7f87c03 authored by Jeff DeCew's avatar Jeff DeCew Committed by Android (Google) Code Review
Browse files

Merge "Fix FlagDependenciesTest" into main

parents d3916e6e 559f63cd
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -48,10 +48,14 @@ abstract class FlagDependenciesBase(
    private var unmetDependencies = emptyList<Dependency>()

    override fun start() {
        if (!handler.enableDependencies) {
            return
        }
        defineDependencies()
        allDependencies = workingDependencies.toList()
        unmetDependencies = workingDependencies.filter { !it.isMet }
        workingDependencies.clear()
        handler.onCollected(allDependencies)
        if (unmetDependencies.isNotEmpty()) {
            handler.warnAboutBadFlagConfiguration(all = allDependencies, unmet = unmetDependencies)
        }
@@ -106,14 +110,24 @@ abstract class FlagDependenciesBase(

    /** Add a dependency to the working list */
    private fun addDependency(first: FlagToken, second: FlagToken) {
        if (!Compile.IS_DEBUG) return // `user` builds should omit all this code
        if (!handler.enableDependencies) return
        workingDependencies.add(
            Dependency(first.name, first.isEnabled, second.name, second.isEnabled)
        )
    }

    /** An interface which handles a warning about a bad flag configuration. */
    /** An interface which handles dependency collection. */
    interface Handler {
        /**
         * Should FlagDependencies do anything?
         *
         * @return false for user builds so that we skip this overhead.
         */
        val enableDependencies: Boolean
            get() = Compile.IS_DEBUG
        /** Handle the complete list of dependencies. */
        fun onCollected(all: List<Dependency>) {}
        /** Handle a bad flag configuration. */
        fun warnAboutBadFlagConfiguration(all: List<Dependency>, unmet: List<Dependency>)
    }
}
@@ -133,7 +147,7 @@ constructor(
        all: List<FlagDependenciesBase.Dependency>,
        unmet: List<FlagDependenciesBase.Dependency>
    ) {
        val title = "Invalid flag dependencies: ${unmet.size} of ${all.size}"
        val title = "Invalid flag dependencies: ${unmet.size}"
        val details = unmet.joinToString("\n") { it.shortUnmetString() }
        Log.e("FlagDependencies", "$title:\n$details")
        val channel = NotificationChannel("FLAGS", "Flags", NotificationManager.IMPORTANCE_DEFAULT)
+9 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.flags

import android.testing.AndroidTestingRunner
import android.util.Log
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import java.io.PrintWriter
@@ -41,14 +42,21 @@ class FlagDependenciesTest : SysuiTestCase() {
        FlagDependencies(TestFeatureFlags(teamfood = teamfood), TestHandler())

    private class TestHandler : FlagDependenciesBase.Handler {
        override val enableDependencies: Boolean
            get() = true
        override fun warnAboutBadFlagConfiguration(
            all: List<FlagDependenciesBase.Dependency>,
            unmet: List<FlagDependenciesBase.Dependency>
        ) {
            val title = "${unmet.size} invalid of ${all.size} flag dependencies"
            val title = "Invalid flag dependencies: ${unmet.size}"
            val details = unmet.joinToString("\n")
            fail("$title:\n$details")
        }

        override fun onCollected(all: List<FlagDependenciesBase.Dependency>) {
            Log.d("FlagDependencies", "All: ${all.size}")
            all.forEach { Log.d("FlagDependencies", "  $it") }
        }
    }

    private class TestFeatureFlags(val teamfood: Boolean) : FeatureFlagsClassic {