diff options
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt | 42 |
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 |