Files
APKDownloader/apk-downloader/src/test/kotlin/com/aurora/apkdownloader/SplitApkArchiveWriterTest.kt
Nathan Lecoanet 334fd2fffd Add apk downloader project based on aurora's core
Docker all in one
2026-07-07 16:25:44 +02:00

77 lines
2.5 KiB
Kotlin

/*
* SPDX-FileCopyrightText: 2026 Aurora OSS
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package com.aurora.apkdownloader
import com.google.common.truth.Truth.assertThat
import java.util.zip.ZipFile
import kotlin.io.path.createDirectories
import kotlin.io.path.exists
import kotlin.io.path.writeText
import org.junit.Rule
import org.junit.Test
import org.junit.rules.TemporaryFolder
class SplitApkArchiveWriterTest {
@get:Rule
val temporaryFolder = TemporaryFolder()
@Test
fun `writes apks archive for multiple apk files`() {
val appDir = temporaryFolder.newFolder().toPath()
val base = appDir.resolve("base.apk").also { it.writeText("base") }
val split = appDir.resolve("config.arm64_v8a.apk").also { it.writeText("split") }
val archive = SplitApkArchiveWriter().write(
packageName = "org.mozilla.firefox",
versionCode = 123,
appDir = appDir,
files = listOf(base, split)
)
assertThat(archive).isNotNull()
assertThat(archive!!.exists()).isTrue()
ZipFile(archive.toFile()).use { zip ->
assertThat(zip.getEntry("base.apk")).isNotNull()
assertThat(zip.getEntry("config.arm64_v8a.apk")).isNotNull()
}
}
@Test
fun `preserves shared library relative paths`() {
val appDir = temporaryFolder.newFolder().toPath()
val base = appDir.resolve("base.apk").also { it.writeText("base") }
val libDir = appDir.resolve("libraries/com.example.lib").also { it.createDirectories() }
val lib = libDir.resolve("base.apk").also { it.writeText("lib") }
val archive = SplitApkArchiveWriter().write(
packageName = "com.example.app",
versionCode = 123,
appDir = appDir,
files = listOf(base, lib)
)
ZipFile(archive!!.toFile()).use { zip ->
assertThat(zip.getEntry("base.apk")).isNotNull()
assertThat(zip.getEntry("libraries/com.example.lib/base.apk")).isNotNull()
}
}
@Test
fun `does not write archive for a single apk file`() {
val appDir = temporaryFolder.newFolder().toPath()
val base = appDir.resolve("base.apk").also { it.writeText("base") }
val archive = SplitApkArchiveWriter().write(
packageName = "org.mozilla.firefox",
versionCode = 123,
appDir = appDir,
files = listOf(base)
)
assertThat(archive).isNull()
}
}