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

Commit d1632fd8 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: I52dc7c78bba4a4b92a7d3cb170771275a2790ff0
parents 99ee3fe2 8555b9a1
Loading
Loading
Loading
Loading
+30 −12
Original line number Original line Diff line number Diff line
@@ -91,10 +91,14 @@ open class AndroidPackageParsingTestBase {


        lateinit var newPackages: List<AndroidPackage>
        lateinit var newPackages: List<AndroidPackage>


        var failureInBeforeClass: Throwable? = null

        @Suppress("ConstantConditionIf")
        @Suppress("ConstantConditionIf")
        @JvmStatic
        @JvmStatic
        @BeforeClass
        @BeforeClass
        fun setUpPackages() {
        fun setUpPackages() {
            failureInBeforeClass = null
            try {
                this.oldPackages = apks.map {
                this.oldPackages = apks.map {
                    packageParser.parsePackage(it, PackageParser.PARSE_IS_SYSTEM_DIR, false)
                    packageParser.parsePackage(it, PackageParser.PARSE_IS_SYSTEM_DIR, false)
                }
                }
@@ -106,10 +110,17 @@ open class AndroidPackageParsingTestBase {
                if (DUMP_HPROF_TO_EXTERNAL) {
                if (DUMP_HPROF_TO_EXTERNAL) {
                    System.gc()
                    System.gc()
                    Environment.getExternalStorageDirectory()
                    Environment.getExternalStorageDirectory()
                        .resolve("${AndroidPackageParsingTestBase::class.java.simpleName}.hprof")
                            .resolve(
                                    "${AndroidPackageParsingTestBase::class.java.simpleName}.hprof")
                            .absolutePath
                            .absolutePath
                            .run(Debug::dumpHprofData)
                            .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? {
        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
    // 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
    // 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
    // 2. the test must only verify fields that [PackageParser.Package] can actually fill, as