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.

This commit is contained in:
MohitMaliFtechiz 2024-03-18 16:43:56 +05:30
parent efb1d8e2e3
commit 3ae2793949
10 changed files with 24 additions and 9 deletions

View File

@ -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 ->

View File

@ -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 ->

View File

@ -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 ->

View File

@ -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 ->

View File

@ -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 ->

View File

@ -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 ->

View File

@ -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 ->

View File

@ -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 ->

View File

@ -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 ->

View File

@ -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