fix(script): use compile instead analyze for scripts with deps (#1912)

This commit is contained in:
Skylot
2023-06-15 21:08:51 +01:00
parent 1a642108ef
commit 6f4451364b
11 changed files with 167 additions and 61 deletions
@@ -0,0 +1,45 @@
package jadx.plugins.script.ide
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
class ScriptServicesTest {
@Test
fun testAnalyzeSimple() {
val name = "simple"
val script = getSampleScript(name)
val result = ScriptServices().analyze(name, script)
println(result)
assertThat(result.success).isTrue()
}
@Test
fun testAnalyzeDeps() {
val name = "test-deps"
val script = getSampleScript(name)
val result = ScriptServices().analyze(name, script)
println(result)
assertThat(result.success).isTrue()
}
@Test
fun testComplete() {
val name = "simple"
val script = getSampleScript(name)
val idx = script.indexOf("jadx.log.info")
val completePos = idx + 7 // jadx.lo| <- complete 'log'
val curScript = script.removeRange(completePos, script.indexOf("\n", idx))
val result = ScriptServices().complete(name, curScript, completePos)
println(result)
assertThat(result.completions)
.hasSize(1)
.allMatch { c -> c.text == "log" }
}
private fun getSampleScript(scriptName: String): String {
val resFile = javaClass.classLoader.getResource("samples/$scriptName.jadx.kts")
return resFile!!.readText()
}
}
@@ -0,0 +1,5 @@
val jadx = getJadxInstance()
jadx.afterLoad {
jadx.log.info { "Hello" }
}
@@ -0,0 +1,11 @@
@file:DependsOn("org.apache.commons:commons-text:1.10.0")
import org.apache.commons.text.StringEscapeUtils
val jadx = getJadxInstance()
jadx.afterLoad {
jadx.classes.forEach {
jadx.log.info { "Escaped name: ${StringEscapeUtils.escapeJava(it.fullName)}" }
}
}