Add apk downloader project based on aurora's core
Docker all in one
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* 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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user