From 840e264d3dc29c44672e3a69d777c4fd83d0a971 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 14 Feb 2024 10:40:01 -0300 Subject: [PATCH] In instrumentation tests, keep @pm@ incremental backups If we request backup in several chunks, @pm@ gets backed up for each chunk, so due to incremental backups, we need to keep old data when comparing. --- .../seedvault/e2e/LargeBackupTestBase.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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()