mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-08-11 10:37:33 +00:00
Add module upgrade test
This commit is contained in:
@@ -13,7 +13,7 @@ import java.io.IOException
|
|||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
data class LocalModule(
|
data class LocalModule(
|
||||||
private val base: ExtendedFile,
|
val base: ExtendedFile,
|
||||||
) : Module() {
|
) : Module() {
|
||||||
private val svc get() = ServiceLocator.networkService
|
private val svc get() = ServiceLocator.networkService
|
||||||
|
|
||||||
|
@@ -12,6 +12,7 @@ import com.topjohnwu.magisk.test.Environment.Companion.INVALID_ZYGISK
|
|||||||
import com.topjohnwu.magisk.test.Environment.Companion.MOUNT_TEST
|
import com.topjohnwu.magisk.test.Environment.Companion.MOUNT_TEST
|
||||||
import com.topjohnwu.magisk.test.Environment.Companion.REMOVE_TEST
|
import com.topjohnwu.magisk.test.Environment.Companion.REMOVE_TEST
|
||||||
import com.topjohnwu.magisk.test.Environment.Companion.SEPOLICY_RULE
|
import com.topjohnwu.magisk.test.Environment.Companion.SEPOLICY_RULE
|
||||||
|
import com.topjohnwu.magisk.test.Environment.Companion.UPGRADE_TEST
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
@@ -56,7 +57,7 @@ class AdditionalTest : BaseTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testModuleCount() {
|
fun testModuleCount() {
|
||||||
var expected = 3
|
var expected = 4
|
||||||
if (Environment.mount()) expected++
|
if (Environment.mount()) expected++
|
||||||
if (Environment.preinit()) expected++
|
if (Environment.preinit()) expected++
|
||||||
if (Environment.lsposed()) expected++
|
if (Environment.lsposed()) expected++
|
||||||
@@ -141,4 +142,20 @@ class AdditionalTest : BaseTest {
|
|||||||
RootUtils.fs.getFile(Environment.REMOVE_TEST_MARKER).exists()
|
RootUtils.fs.getFile(Environment.REMOVE_TEST_MARKER).exists()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testModuleUpgrade() {
|
||||||
|
val module = modules.find { it.id == UPGRADE_TEST }
|
||||||
|
assertNotNull("$UPGRADE_TEST is not installed", module)
|
||||||
|
module!!
|
||||||
|
assertFalse("$UPGRADE_TEST should be disabled", module.enable)
|
||||||
|
assertTrue(
|
||||||
|
"$UPGRADE_TEST should be updated",
|
||||||
|
module.base.getChildFile("post-fs-data.sh").exists()
|
||||||
|
)
|
||||||
|
assertFalse(
|
||||||
|
"$UPGRADE_TEST should be updated",
|
||||||
|
module.base.getChildFile("service.sh").exists()
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -66,6 +66,7 @@ class Environment : BaseTest {
|
|||||||
const val REMOVE_TEST = "remove_test"
|
const val REMOVE_TEST = "remove_test"
|
||||||
const val REMOVE_TEST_MARKER = "/dev/.remove_test_removed"
|
const val REMOVE_TEST_MARKER = "/dev/.remove_test_removed"
|
||||||
const val EMPTY_ZYGISK = "empty_zygisk"
|
const val EMPTY_ZYGISK = "empty_zygisk"
|
||||||
|
const val UPGRADE_TEST = "upgrade_test"
|
||||||
}
|
}
|
||||||
|
|
||||||
object TimberLog : CallbackList<String>(Runnable::run) {
|
object TimberLog : CallbackList<String>(Runnable::run) {
|
||||||
@@ -182,6 +183,29 @@ class Environment : BaseTest {
|
|||||||
assertTrue(error, Shell.cmd("set_default_perm $path").exec().isSuccess)
|
assertTrue(error, Shell.cmd("set_default_perm $path").exec().isSuccess)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupUpgradeModule(root: ExtendedFile, update: ExtendedFile) {
|
||||||
|
val error = "$UPGRADE_TEST setup failed"
|
||||||
|
val oldPath = root.getChildFile(UPGRADE_TEST)
|
||||||
|
val newPath = update.getChildFile(UPGRADE_TEST)
|
||||||
|
|
||||||
|
// Create an existing module but mark as "disable
|
||||||
|
val module = LocalModule(oldPath)
|
||||||
|
assertTrue(error, oldPath.mkdirs())
|
||||||
|
module.enable = false
|
||||||
|
// Install service.sh into the old module
|
||||||
|
assertTrue(error, oldPath.getChildFile("service.sh").createNewFile())
|
||||||
|
|
||||||
|
// Create an upgrade module
|
||||||
|
assertTrue(error, newPath.mkdirs())
|
||||||
|
// Install post-fs-data.sh into the new module
|
||||||
|
assertTrue(error, newPath.getChildFile("post-fs-data.sh").createNewFile())
|
||||||
|
|
||||||
|
assertTrue(error, Shell.cmd(
|
||||||
|
"set_default_perm $oldPath",
|
||||||
|
"set_default_perm $newPath",
|
||||||
|
).exec().isSuccess)
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun setupEnvironment() {
|
fun setupEnvironment() {
|
||||||
runBlocking {
|
runBlocking {
|
||||||
@@ -233,6 +257,7 @@ class Environment : BaseTest {
|
|||||||
setupEmptyZygiskModule(update)
|
setupEmptyZygiskModule(update)
|
||||||
setupInvalidZygiskModule(update)
|
setupInvalidZygiskModule(update)
|
||||||
setupRemoveModule(root)
|
setupRemoveModule(root)
|
||||||
|
setupUpgradeModule(root, update)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user