diff --git a/app/src/androidTest/java/com/stevesoltys/seedvault/e2e/LargeBackupTestBase.kt b/app/src/androidTest/java/com/stevesoltys/seedvault/e2e/LargeBackupTestBase.kt index f4537cd28..3fab1e38c 100644 --- a/app/src/androidTest/java/com/stevesoltys/seedvault/e2e/LargeBackupTestBase.kt +++ b/app/src/androidTest/java/com/stevesoltys/seedvault/e2e/LargeBackupTestBase.kt @@ -2,6 +2,7 @@ package com.stevesoltys.seedvault.e2e import android.content.pm.PackageInfo import android.os.ParcelFileDescriptor +import com.stevesoltys.seedvault.MAGIC_PACKAGE_MANAGER import com.stevesoltys.seedvault.e2e.io.BackupDataInputIntercept import com.stevesoltys.seedvault.e2e.io.InputStreamIntercept import com.stevesoltys.seedvault.e2e.screen.impl.BackupScreen @@ -119,9 +120,21 @@ internal interface LargeBackupTestBase : LargeTestBase { coEvery { spyKVBackup.finishBackup() } answers { + val oldMap = HashMap() + // @pm@ can get backed up multiple times (if we need more than one request) + // so we need to keep the data it backed up before + if (packageName == MAGIC_PACKAGE_MANAGER && backupResult.kv.containsKey(packageName)) { + backupResult.kv[packageName]?.forEach { (key, value) -> + // if a key existing in new data, we use its value from new data, don't override + if (!data.containsKey(key)) oldMap[key] = value + } + } backupResult.kv[packageName!!] = data .mapValues { entry -> entry.value.sha256() } .toMutableMap() + .apply { + putAll(oldMap) + } packageName = null data = mutableMapOf()