From 78770dd2d2bd461c11a3150d5c44ed9f8928912b Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Sat, 11 Apr 2026 19:22:28 -0500 Subject: [PATCH] Improve backup test reliability and cleanup --- .../org/isoron/uhabits/acceptance/BackupTest.kt | 2 ++ .../uhabits/acceptance/steps/BackupSteps.kt | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/BackupTest.kt b/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/BackupTest.kt index 879a8774..4f4c05ca 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/BackupTest.kt +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/BackupTest.kt @@ -30,6 +30,7 @@ import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.MenuItem.DELETE import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.clickMenu import org.isoron.uhabits.acceptance.steps.clearBackupFolder import org.isoron.uhabits.acceptance.steps.clearDownloadFolder +import org.isoron.uhabits.acceptance.steps.clearPublicBackupFolderSelection import org.isoron.uhabits.acceptance.steps.copyBackupToDownloadFolder import org.isoron.uhabits.acceptance.steps.exportFullBackup import org.isoron.uhabits.acceptance.steps.importBackupFromDownloadFolder @@ -62,5 +63,6 @@ class BackupTest : BaseUserInterfaceTest() { selectPublicBackupFolder() exportFullBackup() verifyBackupInDownloadFolder() + clearPublicBackupFolderSelection() } } diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/BackupSteps.kt b/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/BackupSteps.kt index 36881666..4d62f29a 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/BackupSteps.kt +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/BackupSteps.kt @@ -53,8 +53,13 @@ fun clearBackupFolder() { } fun copyBackupToDownloadFolder() { + val srcListing = device.executeShellCommand("ls $BACKUP_FOLDER") + assertTrue("Backup folder is empty. Contents: [$srcListing]", srcListing.contains("Loop Habits Backup")) + device.executeShellCommand("rm -rf $DOWNLOAD_FOLDER") device.executeShellCommand("mv $BACKUP_FOLDER $DOWNLOAD_FOLDER") device.executeShellCommand("chown root $DOWNLOAD_FOLDER") + val dstListing = device.executeShellCommand("ls $DOWNLOAD_FOLDER") + assertTrue("Backup not found in download folder. Contents: [$dstListing]", dstListing.contains("Loop Habits Backup")) } fun selectPublicBackupFolder() { @@ -64,6 +69,12 @@ fun selectPublicBackupFolder() { prefs.edit().putString("publicBackupFolder", uri.toString()).commit() } +fun clearPublicBackupFolderSelection() { + val context = InstrumentationRegistry.getInstrumentation().targetContext + val prefs = PreferenceManager.getDefaultSharedPreferences(context) + prefs.edit().remove("publicBackupFolder").commit() +} + fun importBackupFromDownloadFolder() { clickMenu(SETTINGS) clickText("Import data") @@ -110,6 +121,11 @@ fun verifyBackupInDownloadFolder() { assertTrue(listing.contains("Loop Habits Backup")) } +fun verifyBackupInBackupFolder() { + val listing = device.executeShellCommand("ls $BACKUP_FOLDER") + assertTrue(listing.contains("Loop Habits Backup")) +} + fun openLauncher() { device.pressHome() device.waitForIdle()