Finish tests, add InsnList.setAt, sr -> sd

Added some sweet explanation too.
This commit is contained in:
Lucaskyy
2022-03-19 23:15:20 +01:00
parent 61c0541ef5
commit 8c56d15823
3 changed files with 17 additions and 4 deletions

View File

@@ -4,9 +4,11 @@ import net.revanced.patcher.patch.Patch
import net.revanced.patcher.patch.PatchResultSuccess
import net.revanced.patcher.signature.Signature
import net.revanced.patcher.util.ExtraTypes
import net.revanced.patcher.writer.ASMWriter.setAt
import org.junit.jupiter.api.Test
import org.objectweb.asm.Opcodes.*
import org.objectweb.asm.Type
import org.objectweb.asm.tree.LdcInsnNode
internal class PatcherTest {
private val testSigs: Array<Signature> = arrayOf(
@@ -40,9 +42,19 @@ internal class PatcherTest {
patcher.addPatches(
Patch ("TestPatch") {
// Get the method from the resolver cache
val main = patcher.cache.methods["mainMethod"]
// Get the instruction list
val insn = main.method.instructions!!
// Let's modify it, so it prints "Hello, ReVanced!"
// Get the start index of our signature
// This will be the index of the LDC instruction
val startIndex = main.sd.startIndex
insn.setAt(startIndex, LdcInsnNode("Hello, ReVanced!"))
// Finally, tell the patcher that this patch was a success.
// You can also return PatchResultError with a message.
// If an exception is thrown inside this function,
// a PatchResultError will be returned with the error message.
PatchResultSuccess()
}
)