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

Commit 3c7b584a authored by Adrian Roos's avatar Adrian Roos Committed by Automerger Merge Worker
Browse files

Merge "AndroidPackageParsingTestBase: Re-throw failures in setUpPackages in...

Merge "AndroidPackageParsingTestBase: Re-throw failures in setUpPackages in individual tests" into rvc-dev am: 8555b9a1

Change-Id: Ibbb51d6f85d2dfe2ccd873d66a2e841fe52ab0ee
parents bdda392a 8555b9a1
Loading
Loading
Loading
Loading
+30 −12
Original line number Diff line number Diff line
@@ -91,10 +91,14 @@ open class AndroidPackageParsingTestBase {

        lateinit var newPackages: List<AndroidPackage>

        var failureInBeforeClass: Throwable? = null

        @Suppress("ConstantConditionIf")
        @JvmStatic
        @BeforeClass
        fun setUpPackages() {
            failureInBeforeClass = null
            try {
                this.oldPackages = apks.map {
                    packageParser.parsePackage(it, PackageParser.PARSE_IS_SYSTEM_DIR, false)
                }
@@ -106,10 +110,17 @@ open class AndroidPackageParsingTestBase {
                if (DUMP_HPROF_TO_EXTERNAL) {
                    System.gc()
                    Environment.getExternalStorageDirectory()
                        .resolve("${AndroidPackageParsingTestBase::class.java.simpleName}.hprof")
                            .resolve(
                                    "${AndroidPackageParsingTestBase::class.java.simpleName}.hprof")
                            .absolutePath
                            .run(Debug::dumpHprofData)
                }
            } catch (t: Throwable) {
                // If we crash here we cause a tool failure (because we don't run any of the tests
                // in the subclasses, leading to a difference between expected and actual test
                // result counts).
                failureInBeforeClass = t
            }
        }

        fun oldAppInfo(pkg: PackageParser.Package, flags: Int = 0): ApplicationInfo? {
@@ -137,6 +148,13 @@ open class AndroidPackageParsingTestBase {
        }
    }

    @org.junit.Before
    fun verifySetUpPackages() {
        failureInBeforeClass?.let {
            throw AssertionError("setUpPackages failed:", it)
        }
    }

    // The following methods dump an exact set of fields from the object to compare, because
    // 1. comprehensive equals/toStrings do not exist on all of the Info objects, and
    // 2. the test must only verify fields that [PackageParser.Package] can actually fill, as