[Native][tests] Make AbstractRunner.AbstractRun to be fun interface

This commit is contained in:
Dmitriy Dolovov
2021-11-18 12:40:04 +03:00
parent fec63a5f1c
commit e2d68fd239
2 changed files with 10 additions and 12 deletions
@@ -14,21 +14,19 @@ internal abstract class AbstractLocalProcessRunner<R> : AbstractRunner<R>() {
protected open fun customizeProcess(process: Process) = Unit
final override fun buildRun() = object : AbstractRun {
override fun run(): RunResult {
val startTimeMillis = System.currentTimeMillis()
final override fun buildRun() = AbstractRun {
val startTimeMillis = System.currentTimeMillis()
val process = ProcessBuilder(programArgs).directory(executable.executableFile.parentFile).start()
customizeProcess(process)
val process = ProcessBuilder(programArgs).directory(executable.executableFile.parentFile).start()
customizeProcess(process)
val exitCode = process.waitFor()
val finishTimeMillis = System.currentTimeMillis()
val exitCode = process.waitFor()
val finishTimeMillis = System.currentTimeMillis()
val stdOut = process.inputStream.bufferedReader().readText()
val stdErr = process.errorStream.bufferedReader().readText()
val stdOut = process.inputStream.bufferedReader().readText()
val stdErr = process.errorStream.bufferedReader().readText()
return RunResult(exitCode, finishTimeMillis - startTimeMillis, stdOut, stdErr)
}
RunResult(exitCode, finishTimeMillis - startTimeMillis, stdOut, stdErr)
}
abstract override fun buildResultHandler(runResult: RunResult): ResultHandler // Narrow returned type.
@@ -29,7 +29,7 @@ internal abstract class AbstractRunner<R> {
}
}
interface AbstractRun {
fun interface AbstractRun {
fun run(): RunResult
}