[test][debugger] refactoring

This commit is contained in:
Vasily Levchenko
2020-07-02 21:47:11 +02:00
parent f897ad6f23
commit 53ff9eff28
2 changed files with 6 additions and 19 deletions
@@ -13,21 +13,12 @@ import org.jetbrains.kotlin.cli.bc.K2Native
import java.io.ByteArrayOutputStream
import java.io.InputStream
import java.io.StringReader
import java.lang.StringBuilder
import java.nio.file.Files
import java.nio.file.Path
import java.time.temporal.ChronoUnit
import java.util.concurrent.TimeUnit
/**
* TODO: This constructor looks weird in conjunction with [DistProperties]
*/
class ToolDriver(
private val konancDriver: Path,
private val lldb: Path,
private val dwarfDump: Path,
private val lldbPrettyPrinters: Path,
private val useInProcessCompiler: Boolean = false
) {
fun compile(source: Path, output: Path, vararg args: String) {
@@ -37,7 +28,7 @@ class ToolDriver(
if (useInProcessCompiler) {
K2Native.main(allArgs)
} else {
subprocess(konancDriver, *allArgs).thrownIfFailed()
subprocess(DistProperties.konanc, *allArgs).thrownIfFailed()
}
check(Files.exists(output)) {
"Compiler has not produced an output at $output"
@@ -45,15 +36,15 @@ class ToolDriver(
}
fun runLldb(program: Path, commands: List<String>): String {
val args = listOf("-b", "-o", "command script import \"$lldbPrettyPrinters\"") +
val args = listOf("-b", "-o", "command script import \"${DistProperties.lldbPrettyPrinters}\"") +
commands.flatMap { listOf("-o", it) }
return subprocess(lldb, program.toString(), "-b", *args.toTypedArray())
return subprocess(DistProperties.lldb, program.toString(), "-b", *args.toTypedArray())
.thrownIfFailed()
.stdout
}
fun runDwarfDump(program: Path, processor:List<DwarfTag>.()->Unit) {
val out = subprocess(dwarfDump, "${program}.dSYM/Contents/Resources/DWARF/${program.fileName}").takeIf { it.process.exitValue() == 0 }?.stdout ?: error("${program}.dSYM/Contents/Resources/DWARF/${program.fileName}")
val out = subprocess(DistProperties.dwarfDump, "${program}.dSYM/Contents/Resources/DWARF/${program.fileName}").takeIf { it.process.exitValue() == 0 }?.stdout ?: error("${program}.dSYM/Contents/Resources/DWARF/${program.fileName}")
DwarfUtilParser().parse(StringReader(out)).tags.toList().processor()
}
}
@@ -78,7 +78,7 @@ fun lldbTest(@Language("kotlin") programText: String, lldbSession: String) {
val source = tmpdir.resolve("main.kt")
val output = tmpdir.resolve("program.kexe")
val driver = ToolDriver(DistProperties.konanc, DistProperties.lldb, DistProperties.dwarfDump, DistProperties.lldbPrettyPrinters)
val driver = ToolDriver()
Files.write(source, programText.trimIndent().toByteArray())
driver.compile(source, output, "-g")
val result = driver.runLldb(output, lldbSessionSpec.commands)
@@ -106,11 +106,7 @@ fun dwarfDumpTest(@Language("kotlin") programText: String, flags: List<String>,
val source = resolve("main.kt")
val output = resolve("program.kexe")
val driver = ToolDriver(
DistProperties.konanc,
DistProperties.lldb,
DistProperties.dwarfDump,
DistProperties.lldbPrettyPrinters)
val driver = ToolDriver()
Files.write(source, programText.trimIndent().toByteArray())
driver.compile(source, output, "-g", *flags.toTypedArray())
driver.runDwarfDump(output, test)