diff --git a/src/main/kotlin/app/revanced/patcher/PatchBundleLoader.kt b/src/main/kotlin/app/revanced/patcher/PatchBundleLoader.kt index 160961f..00adc87 100644 --- a/src/main/kotlin/app/revanced/patcher/PatchBundleLoader.kt +++ b/src/main/kotlin/app/revanced/patcher/PatchBundleLoader.kt @@ -39,8 +39,10 @@ sealed class PatchBundleLoader private constructor( * * @param patchBundles The path to patch bundles of JAR format. */ - class Jar(vararg patchBundles: File) : - PatchBundleLoader(with(URLClassLoader(patchBundles.map { it.toURI().toURL() }.toTypedArray())) { + class Jar(vararg patchBundles: File) : PatchBundleLoader( + with( + URLClassLoader(patchBundles.map { it.toURI().toURL() }.toTypedArray()) + ) { patchBundles.flatMap { patchBundle -> // Get the names of all classes in the DEX file. @@ -55,15 +57,17 @@ sealed class PatchBundleLoader private constructor( * A [PatchBundleLoader] for [Dex] files. * * @param patchBundles The path to patch bundles of DEX format. + * @param optimizedDexDirectory The directory to store optimized DEX files in. + * This parameter is deprecated and has no effect since API level 26. */ - class Dex(vararg patchBundles: File) : PatchBundleLoader(with( - DexClassLoader( - patchBundles.joinToString(File.pathSeparator) { it.absolutePath }, - null, + class Dex(vararg patchBundles: File, optimizedDexDirectory: File? = null) : PatchBundleLoader( + with( + DexClassLoader( + patchBundles.joinToString(File.pathSeparator) { it.absolutePath }, optimizedDexDirectory?.absolutePath, null, PatchBundleLoader::class.java.classLoader - ) - ) { + ) + ) { patchBundles .flatMap { MultiDexIO.readDexFile(true, it, BasicDexFileNamer(), null, null).classes diff --git a/src/test/kotlin/app/revanced/patcher/patch/PatchOptionsTest.kt b/src/test/kotlin/app/revanced/patcher/patch/PatchOptionsTest.kt index 125b59b..8d37011 100644 --- a/src/test/kotlin/app/revanced/patcher/patch/PatchOptionsTest.kt +++ b/src/test/kotlin/app/revanced/patcher/patch/PatchOptionsTest.kt @@ -3,7 +3,9 @@ package app.revanced.patcher.patch import app.revanced.patcher.usage.bytecode.ExampleBytecodePatch import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows +import kotlin.test.assertEquals import kotlin.test.assertNotEquals +import kotlin.test.assertNotNull internal class PatchOptionsTest { private val options = ExampleBytecodePatch.options @@ -23,14 +25,14 @@ internal class PatchOptionsTest { is PatchOption.StringListOption -> { option.value = option.options.first() for (choice in option.options) { - println(choice) + assertNotNull(choice) } } is PatchOption.IntListOption -> { option.value = option.options.first() for (choice in option.options) { - println(choice) + assertNotNull(choice) } } } @@ -38,9 +40,9 @@ internal class PatchOptionsTest { val option = options.get("key1") // or: val option: String? by options["key1"] // then you won't need `.value` every time - println(option.value) + assertEquals("Hello World", option.value) options["key1"] = "Hello, world!" - println(option.value) + assertEquals("Hello, world!", option.value) } @Test @@ -101,7 +103,7 @@ internal class PatchOptionsTest { @Test fun `should fail because getting a non-initialized option is illegal`() { assertThrows { - println(options["key5"].value) + options["key5"].value } } } \ No newline at end of file