summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adrian Roos <roosa@google.com> 2020-04-02 15:12:37 +0200
committer Adrian Roos <roosa@google.com> 2020-04-02 15:13:20 +0000
commitb1d3bf70cd7c33827c2a9b58c9beaa6cbf4bc8cf (patch)
tree41915163f27dfacc73763f4a8c7c4e9f3f4a5e7a
parentf0059d21c775fd94291451b1aa5272f86da99e7d (diff)
AndroidPackageParsingTestBase: Re-throw failures in setUpPackages in individual tests
Throwing in an @BeforeClass method breaks our test runner, due to not reporting any results for the tests therein, leading to a difference between actual and expected test counts. The tool failure also obscured the fact that these tests were already failing. Bug: 153058196 Test: atest AndroidPackageInfoFlagBehaviorTest AndroidPackageParsingEquivalenceTest Change-Id: Id0c1ebe2c99ff58451c1a1ccc20c6f9e355a725f
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt42
1 files changed, 30 insertions, 12 deletions
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt
index d7b02f44ed26..19bf9b673f8b 100644
--- a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt
+++ b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt
@@ -91,24 +91,35 @@ open class AndroidPackageParsingTestBase {
lateinit var newPackages: List<AndroidPackage>
+ var failureInBeforeClass: Throwable? = null
+
@Suppress("ConstantConditionIf")
@JvmStatic
@BeforeClass
fun setUpPackages() {
- this.oldPackages = apks.map {
- packageParser.parsePackage(it, PackageParser.PARSE_IS_SYSTEM_DIR, false)
- }
+ failureInBeforeClass = null
+ try {
+ this.oldPackages = apks.map {
+ packageParser.parsePackage(it, PackageParser.PARSE_IS_SYSTEM_DIR, false)
+ }
- this.newPackages = apks.map {
- packageParser2.parsePackage(it, PackageParser.PARSE_IS_SYSTEM_DIR, false)
- }
+ this.newPackages = apks.map {
+ packageParser2.parsePackage(it, PackageParser.PARSE_IS_SYSTEM_DIR, false)
+ }
- if (DUMP_HPROF_TO_EXTERNAL) {
- System.gc()
- Environment.getExternalStorageDirectory()
- .resolve("${AndroidPackageParsingTestBase::class.java.simpleName}.hprof")
- .absolutePath
- .run(Debug::dumpHprofData)
+ if (DUMP_HPROF_TO_EXTERNAL) {
+ System.gc()
+ Environment.getExternalStorageDirectory()
+ .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
}
}
@@ -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