From f0096a63f87aafddd76b57de181878377dc2387e Mon Sep 17 00:00:00 2001 From: Daniel Tang Date: Sun, 12 Mar 2023 21:23:30 -0400 Subject: [PATCH 1/3] Fix build on Java 19 --- buildSrc/src/main/kotlin/Versions.kt | 2 +- .../kotlin/plugin/AllProjectConfigurer.kt | 4 ++- .../kiwixmobile/core/utils/NetworkUtils.kt | 6 +++- .../core/utils/NetworkUtilsTest.kt | 29 ++----------------- 4 files changed, 11 insertions(+), 30 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index b19dcf2ce..8c3d0c458 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -42,7 +42,7 @@ object Versions { const val io_objectbox: String = "3.5.0" - const val io_mockk: String = "1.12.0" + const val io_mockk: String = "1.13.4" const val android_arch_lifecycle_extensions: String = "1.1.1" diff --git a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt index 69f8cd400..7d69e7ac3 100644 --- a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt +++ b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt @@ -111,7 +111,9 @@ class AllProjectConfigurer { "IconDipSize", "UnusedResources", "NonConstantResourceId", - "NotifyDataSetChanged" + "NotifyDataSetChanged", + "NotificationPermission", + "MonochromeLauncherIcon" ) lintConfig = target.rootProject.file("lintConfig.xml") } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/NetworkUtils.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/NetworkUtils.kt index f0fee1dd0..7af62299c 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/NetworkUtils.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/NetworkUtils.kt @@ -22,6 +22,7 @@ import android.net.ConnectivityManager import android.net.NetworkInfo import android.os.Build import android.util.Log +import androidx.annotation.VisibleForTesting import org.kiwix.kiwixmobile.core.R import java.lang.Exception import java.util.UUID @@ -41,6 +42,9 @@ object NetworkUtils { fun isNetworkConnectionOK(networkInfo: NetworkInfo): Boolean = networkInfo.state == NetworkInfo.State.CONNECTED + @VisibleForTesting + internal var sdkVersionForTesting = Build.VERSION.SDK_INT + /** * check if network of type WIFI is connected * @@ -52,7 +56,7 @@ object NetworkUtils { fun isWiFi(context: Context): Boolean { val connectivity = context .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + return if (sdkVersionForTesting >= Build.VERSION_CODES.M) { val networkInfo = connectivity.activeNetworkInfo ?: return false networkInfo.type == ConnectivityManager.TYPE_WIFI && networkInfo.isConnected } else { diff --git a/core/src/test/java/org/kiwix/kiwixmobile/core/utils/NetworkUtilsTest.kt b/core/src/test/java/org/kiwix/kiwixmobile/core/utils/NetworkUtilsTest.kt index aca82a2f9..fd098a0e6 100644 --- a/core/src/test/java/org/kiwix/kiwixmobile/core/utils/NetworkUtilsTest.kt +++ b/core/src/test/java/org/kiwix/kiwixmobile/core/utils/NetworkUtilsTest.kt @@ -21,8 +21,6 @@ package org.kiwix.kiwixmobile.core.utils import android.content.Context import android.net.ConnectivityManager import android.net.NetworkInfo -import android.os.Build -import android.util.Log import io.mockk.every import io.mockk.mockk import io.mockk.verify @@ -31,8 +29,6 @@ import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.jupiter.api.Test import org.kiwix.kiwixmobile.core.R -import java.lang.reflect.Field -import java.lang.reflect.Modifier import java.util.regex.Pattern class NetworkUtilsTest { @@ -79,11 +75,7 @@ class NetworkUtilsTest { every { (connectivity.activeNetworkInfo) } returns networkInfo // SDK >= 23 - try { - setSDKVersion(Build.VERSION::class.java.getField("SDK_INT"), 23) - } catch (e: Exception) { - Log.d("NetworkUtilsTest", "Unable to set Build SDK Version") - } + NetworkUtils.sdkVersionForTesting = 23 // on Mobile Data every { (networkInfo.type) } returns ConnectivityManager.TYPE_MOBILE @@ -110,11 +102,7 @@ class NetworkUtilsTest { verify(exactly = 0) { connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI) } // SDK < 23 - try { - setSDKVersion(Build.VERSION::class.java.getField("SDK_INT"), 22) - } catch (e: Exception) { - Log.d("NetworkUtilsTest", "Unable to set Build SDK Version") - } + NetworkUtils.sdkVersionForTesting = 22 // WIFI connected every { (connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI)) } returns networkInfo @@ -236,17 +224,4 @@ class NetworkUtilsTest { ) ) } - - // Sets the Build SDK version - @Throws(Exception::class) - private fun setSDKVersion( - field: Field, - newValue: Any - ) { - field.isAccessible = true - val modifiersField = Field::class.java.getDeclaredField("modifiers") - modifiersField.isAccessible = true - modifiersField.setInt(field, field.modifiers and Modifier.FINAL.inv()) - field.set(null, newValue) - } } From ce71814076af31fb5536ef235330f5e4dd709bd9 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Wed, 29 Mar 2023 16:07:58 +0530 Subject: [PATCH 2/3] Moved FileUtilsTest from androidTest package to test package, because in mockk 1.13.4 we can not use mockk in androidTest package and moved testDecodeFileName test into FileUtilsInstrumentationTest becuase FileUtils.getDecodedFileName() method needs to run in androidTest package --- .../files/FileUtilsInstrumentationTest.kt | 48 +++++++++++++ .../core}/utils/files/FileUtilsTest.kt | 69 +------------------ 2 files changed, 51 insertions(+), 66 deletions(-) rename {app/src/androidTest/java/org/kiwix/kiwixmobile => core/src/test/java/org/kiwix/kiwixmobile/core}/utils/files/FileUtilsTest.kt (61%) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/files/FileUtilsInstrumentationTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/files/FileUtilsInstrumentationTest.kt index 56c863241..bbb899772 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/files/FileUtilsInstrumentationTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/files/FileUtilsInstrumentationTest.kt @@ -23,9 +23,11 @@ import org.junit.After import org.junit.Assert import org.junit.Before import org.junit.Test +import org.junit.jupiter.api.Assertions import org.kiwix.kiwixmobile.core.utils.files.FileUtils.getAllZimParts import org.kiwix.kiwixmobile.core.utils.files.FileUtils.hasPart import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity +import org.kiwix.kiwixmobile.core.utils.files.FileUtils import java.io.File import java.io.IOException import java.util.Random @@ -199,4 +201,50 @@ class FileUtilsInstrumentationTest { it.delete() } } + + @Test + fun testDecodeFileName() { + val dummyUrlArray = listOf( + DummyUrlData( + "https://kiwix.org/contributors/contributors_list.pdf", + "contributors_list.pdf" + ), + DummyUrlData( + "https://kiwix.org/contributors/", + null + ), + DummyUrlData( + "android_tutorials.pdf", + null + ), + DummyUrlData( + null, + null + ), + DummyUrlData( + "/html/images/test.png", + "test.png" + ), + DummyUrlData( + "/html/images/", + null + ), + DummyUrlData( + "https://kiwix.org/contributors/images/wikipedia.png", + "wikipedia.png" + ), + DummyUrlData( + "https://kiwix.org/contributors/images/wikipedia", + null + ) + ) + dummyUrlArray.forEach { + Assertions.assertEquals( + FileUtils.getDecodedFileName(it.url), + it.expectedFileName + ) + } + } + + data class DummyUrlData(val url: String?, val expectedFileName: String?) } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/files/FileUtilsTest.kt b/core/src/test/java/org/kiwix/kiwixmobile/core/utils/files/FileUtilsTest.kt similarity index 61% rename from app/src/androidTest/java/org/kiwix/kiwixmobile/utils/files/FileUtilsTest.kt rename to core/src/test/java/org/kiwix/kiwixmobile/core/utils/files/FileUtilsTest.kt index 38924553c..e271728a8 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/files/FileUtilsTest.kt +++ b/core/src/test/java/org/kiwix/kiwixmobile/core/utils/files/FileUtilsTest.kt @@ -16,42 +16,25 @@ * */ -package org.kiwix.kiwixmobile.utils.files +package org.kiwix.kiwixmobile.core.utils.files -import androidx.core.content.edit -import androidx.preference.PreferenceManager -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice import io.mockk.clearMocks import io.mockk.every import io.mockk.mockk -import org.junit.Before -import org.junit.Test +import org.junit.jupiter.api.Test import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.BeforeEach -import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.core.CoreApp import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity.Book -import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil -import org.kiwix.kiwixmobile.core.utils.files.FileUtils import java.io.File -class FileUtilsTest : BaseActivityTest() { +class FileUtilsTest { private val mockFile: File = mockk() private val testBook = Book().apply { file = mockFile } private val testId = "8ce5775a-10a9-bbf3-178a-9df69f23263c" private val fileName = "/data/user/0/org.kiwix.kiwixmobile/files${File.separator}$testId" - @Before - override fun waitForIdle() { - UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).waitForIdle() - PreferenceManager.getDefaultSharedPreferences(context).edit { - putBoolean(SharedPreferenceUtil.PREF_SHOW_INTRO, false) - putBoolean(SharedPreferenceUtil.PREF_WIFI_ONLY, false) - } - } - @BeforeEach fun init() { clearMocks(mockFile) @@ -117,50 +100,4 @@ class FileUtilsTest : BaseActivityTest() { every { mockFile.path } returns "$fileName$extension" every { mockFile.exists() } returns fileExists } - - @Test - fun testDecodeFileName() { - val dummyUrlArray = listOf( - DummyUrlData( - "https://kiwix.org/contributors/contributors_list.pdf", - "contributors_list.pdf" - ), - DummyUrlData( - "https://kiwix.org/contributors/", - null - ), - DummyUrlData( - "android_tutorials.pdf", - null - ), - DummyUrlData( - null, - null - ), - DummyUrlData( - "/html/images/test.png", - "test.png" - ), - DummyUrlData( - "/html/images/", - null - ), - DummyUrlData( - "https://kiwix.org/contributors/images/wikipedia.png", - "wikipedia.png" - ), - DummyUrlData( - "https://kiwix.org/contributors/images/wikipedia", - null - ) - ) - dummyUrlArray.forEach { - assertEquals( - FileUtils.getDecodedFileName(it.url), - it.expectedFileName - ) - } - } - - data class DummyUrlData(val url: String?, val expectedFileName: String?) } From 8e136b77c5a09378721db27323edb2755495e7a7 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Wed, 29 Mar 2023 16:24:13 +0530 Subject: [PATCH 3/3] Removed extra added ignore lint warnings --- buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt index 7d69e7ac3..69f8cd400 100644 --- a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt +++ b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt @@ -111,9 +111,7 @@ class AllProjectConfigurer { "IconDipSize", "UnusedResources", "NonConstantResourceId", - "NotifyDataSetChanged", - "NotificationPermission", - "MonochromeLauncherIcon" + "NotifyDataSetChanged" ) lintConfig = target.rootProject.file("lintConfig.xml") }