From 3ae2793949d4e048a1df89774d46d9eb585f79a7 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Mon, 18 Mar 2024 16:43:56 +0530 Subject: [PATCH] Added the 'testDirectory' to our scanning process, as on API level 33, the app-specific path is occasionally treated as READ_ONLY. Additionally, for certain test cases where we need to load the zim file in the LocalLibraryScreen, we've included the test directory in our scanning process, as it will be automatically handled by the OS. --- .../kiwix/kiwixmobile/ObjectBoxToLibkiwixMigratorTest.kt | 3 ++- .../java/org/kiwix/kiwixmobile/mimetype/MimeTypeTest.kt | 3 ++- .../nav/destination/library/LocalLibraryTest.kt | 3 ++- .../java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt | 3 ++- .../kiwixmobile/page/bookmarks/LibkiwixBookmarkTest.kt | 3 ++- .../kiwixmobile/page/history/NavigationHistoryTest.kt | 3 ++- .../kiwix/kiwixmobile/reader/KiwixReaderFragmentTest.kt | 3 ++- .../org/kiwix/kiwixmobile/search/SearchFragmentTest.kt | 3 ++- .../org/kiwix/kiwixmobile/webserver/ZimHostFragmentTest.kt | 2 +- .../java/eu/mhutti1/utils/storage/StorageDeviceUtils.kt | 7 +++++++ 10 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToLibkiwixMigratorTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToLibkiwixMigratorTest.kt index 8e18e7fdc..e870a20d5 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToLibkiwixMigratorTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToLibkiwixMigratorTest.kt @@ -18,6 +18,7 @@ package org.kiwix.kiwixmobile +import android.content.Context import androidx.core.content.edit import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager @@ -122,7 +123,7 @@ class ObjectBoxToLibkiwixMigratorTest : BaseActivityTest() { // add a file in fileSystem because we need to actual file path for making object of Archive. val loadFileStream = ObjectBoxToLibkiwixMigratorTest::class.java.classLoader.getResourceAsStream("testzim.zim") - zimFile = File(context.cacheDir, "testzim.zim") + zimFile = File(context.getDir("testDir", Context.MODE_PRIVATE), "testzim.zim") if (zimFile.exists()) zimFile.delete() zimFile.createNewFile() loadFileStream.use { inputStream -> diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/mimetype/MimeTypeTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/mimetype/MimeTypeTest.kt index 03d0a2eb3..3cbfbbed9 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/mimetype/MimeTypeTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/mimetype/MimeTypeTest.kt @@ -18,6 +18,7 @@ package org.kiwix.kiwixmobile.mimetype +import android.content.Context import androidx.core.content.edit import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager @@ -61,7 +62,7 @@ class MimeTypeTest : BaseActivityTest() { @Test fun testMimeType() { val loadFileStream = MimeTypeTest::class.java.classLoader.getResourceAsStream("testzim.zim") - val zimFile = File(context.cacheDir, "testzim.zim") + val zimFile = File(context.getDir("testDir", Context.MODE_PRIVATE), "testzim.zim") if (zimFile.exists()) zimFile.delete() zimFile.createNewFile() loadFileStream.use { inputStream -> diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryTest.kt index b237efdd1..6c52365b6 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryTest.kt @@ -18,6 +18,7 @@ package org.kiwix.kiwixmobile.nav.destination.library +import android.content.Context import androidx.core.content.edit import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager @@ -85,7 +86,7 @@ class LocalLibraryTest : BaseActivityTest() { // load a zim file to test, After downloading zim file library list is visible or not val loadFileStream = LocalLibraryTest::class.java.classLoader.getResourceAsStream("testzim.zim") - val zimFile = File(context.cacheDir, "testzim.zim") + val zimFile = File(context.getDir("testDir", Context.MODE_PRIVATE), "testzim.zim") if (zimFile.exists()) zimFile.delete() zimFile.createNewFile() loadFileStream.use { inputStream -> diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt index 3123e14fc..94d20a979 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt @@ -18,6 +18,7 @@ package org.kiwix.kiwixmobile.note +import android.content.Context import androidx.core.content.edit import androidx.core.net.toUri import androidx.lifecycle.Lifecycle @@ -91,7 +92,7 @@ class NoteFragmentTest : BaseActivityTest() { val loadFileStream = NoteFragmentTest::class.java.classLoader.getResourceAsStream("testzim.zim") - val zimFile = File(context.cacheDir, "testzim.zim") + val zimFile = File(context.getDir("testDir", Context.MODE_PRIVATE), "testzim.zim") if (zimFile.exists()) zimFile.delete() zimFile.createNewFile() loadFileStream.use { inputStream -> diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/LibkiwixBookmarkTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/LibkiwixBookmarkTest.kt index 7db600c7f..ff99c16fa 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/LibkiwixBookmarkTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/LibkiwixBookmarkTest.kt @@ -18,6 +18,7 @@ package org.kiwix.kiwixmobile.page.bookmarks +import android.content.Context import androidx.core.content.edit import androidx.core.net.toUri import androidx.lifecycle.Lifecycle @@ -75,7 +76,7 @@ class LibkiwixBookmarkTest : BaseActivityTest() { } val loadFileStream = LibkiwixBookmarkTest::class.java.classLoader.getResourceAsStream("testzim.zim") - val zimFile = File(context.cacheDir, "testzim.zim") + val zimFile = File(context.getDir("testDir", Context.MODE_PRIVATE), "testzim.zim") if (zimFile.exists()) zimFile.delete() zimFile.createNewFile() loadFileStream.use { inputStream -> diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/page/history/NavigationHistoryTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/page/history/NavigationHistoryTest.kt index 7f295211d..75511e6ff 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/page/history/NavigationHistoryTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/page/history/NavigationHistoryTest.kt @@ -18,6 +18,7 @@ package org.kiwix.kiwixmobile.page.history +import android.content.Context import androidx.core.content.edit import androidx.core.net.toUri import androidx.lifecycle.Lifecycle @@ -76,7 +77,7 @@ class NavigationHistoryTest : BaseActivityTest() { } val loadFileStream = NavigationHistoryTest::class.java.classLoader.getResourceAsStream("testzim.zim") - val zimFile = File(context.cacheDir, "testzim.zim") + val zimFile = File(context.getDir("testDir", Context.MODE_PRIVATE), "testzim.zim") if (zimFile.exists()) zimFile.delete() zimFile.createNewFile() loadFileStream.use { inputStream -> diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/KiwixReaderFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/KiwixReaderFragmentTest.kt index cc94b8608..e38b70244 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/KiwixReaderFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/KiwixReaderFragmentTest.kt @@ -18,6 +18,7 @@ package org.kiwix.kiwixmobile.reader +import android.content.Context import androidx.core.content.edit import androidx.core.net.toUri import androidx.lifecycle.Lifecycle @@ -75,7 +76,7 @@ class KiwixReaderFragmentTest : BaseActivityTest() { } val loadFileStream = KiwixReaderFragmentTest::class.java.classLoader.getResourceAsStream("testzim.zim") - val zimFile = File(context.cacheDir, "testzim.zim") + val zimFile = File(context.getDir("testDir", Context.MODE_PRIVATE), "testzim.zim") if (zimFile.exists()) zimFile.delete() zimFile.createNewFile() loadFileStream.use { inputStream -> diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt index 2ed8a67bd..06464bfe9 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt @@ -17,6 +17,7 @@ */ package org.kiwix.kiwixmobile.search +import android.content.Context import androidx.core.content.edit import androidx.core.net.toUri import androidx.lifecycle.Lifecycle @@ -214,7 +215,7 @@ class SearchFragmentTest : BaseActivityTest() { private fun getTestZimFile(): File { val loadFileStream = SearchFragmentTest::class.java.classLoader.getResourceAsStream("testzim.zim") - val zimFile = File(context.cacheDir, "testzim.zim") + val zimFile = File(context.getDir("testDir", Context.MODE_PRIVATE), "testzim.zim") if (zimFile.exists()) zimFile.delete() zimFile.createNewFile() loadFileStream.use { inputStream -> diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/webserver/ZimHostFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/webserver/ZimHostFragmentTest.kt index f43a89f51..0c6959be1 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/webserver/ZimHostFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/webserver/ZimHostFragmentTest.kt @@ -165,7 +165,7 @@ class ZimHostFragmentTest { private fun loadZimFileInApplication(zimFileName: String) { val loadFileStream = ZimHostFragmentTest::class.java.classLoader.getResourceAsStream(zimFileName) - val zimFile = File(sharedPreferenceUtil.prefStorage, zimFileName) + val zimFile = File(context?.getDir("testDir", Context.MODE_PRIVATE), zimFileName) if (zimFile.exists()) zimFile.delete() zimFile.createNewFile() loadFileStream.use { inputStream -> diff --git a/core/src/main/java/eu/mhutti1/utils/storage/StorageDeviceUtils.kt b/core/src/main/java/eu/mhutti1/utils/storage/StorageDeviceUtils.kt index d950840a1..53685d45c 100644 --- a/core/src/main/java/eu/mhutti1/utils/storage/StorageDeviceUtils.kt +++ b/core/src/main/java/eu/mhutti1/utils/storage/StorageDeviceUtils.kt @@ -44,6 +44,10 @@ object StorageDeviceUtils { // Therefore, we need to explicitly include the app-specific directory for scanning. // See https://github.com/kiwix/kiwix-android/issues/3579 addAll(externalFilesDirsDevices(context, true)) + + // added test directory to show the ZIM files stored in the test directory + // so that we can view and delete zim files inside this directory. + add(testDirectory(context)) } return validate(storageDevices, false) } @@ -77,6 +81,9 @@ object StorageDeviceUtils { Environment.isExternalStorageEmulated() ) + private fun testDirectory(context: Context) = + StorageDevice(context.getDir("testDir", Context.MODE_PRIVATE), true) + // Remove app specific path from directories so that we can search them from the top private fun generalisePath(path: String, writable: Boolean) = if (writable) path