blob: 1e76b3038881e4adf48e8ec89b5cd11b01ee4cb0 [file] [log] [blame]
package testutils
import scala.sys.process.{Process, ProcessIO}
object CocotbRunner {
def apply(path: String): Boolean = {
doCmd(Seq(s"cd $path", "rm -f results.xml", "make"))
getCocotbPass(path)
}
def doCmd(cmds: Seq[String]): Unit = {
var out, err: String = null
val io = new ProcessIO(
stdin => {
for (cmd <- cmds)
stdin.write((cmd + "\n").getBytes)
stdin.close()
},
stdout => {
out = scala.io.Source
.fromInputStream(stdout)
.getLines
.foldLeft("")(_ + "\n" + _)
stdout.close()
},
stderr => {
err = scala.io.Source
.fromInputStream(stderr)
.getLines
.foldLeft("")(_ + "\n" + _)
stderr.close()
}
)
val proc = Process("sh").run(io)
proc.exitValue()
println(out)
println(err)
}
def getCocotbPass(path: String): Boolean = {
import scala.io.Source
for (line <- Source.fromFile(path + "/results.xml").getLines()) {
if (line.contains("failure") || line.contains("skipped")) {
return false
}
}
return true
}
}