aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2016-11-07 09:30:17 -0500
committerChristopher Vogt <oss.nsp@cvogt.org>2016-11-07 09:31:14 -0500
commitd9400855a2f8539d2ca88b6f7e4731dc37a1411d (patch)
treec62a5de32e771b9e2f4c709bde74b1a0c8425089 /test
parent4c561daeecf9eb23e1048160d70a2d2d64f47164 (diff)
downloadcbt-d9400855a2f8539d2ca88b6f7e4731dc37a1411d.tar.gz
cbt-d9400855a2f8539d2ca88b6f7e4731dc37a1411d.tar.bz2
cbt-d9400855a2f8539d2ca88b6f7e4731dc37a1411d.zip
Fix bug in tests that could block infinitely
Diffstat (limited to 'test')
-rw-r--r--test/test.scala25
1 files changed, 15 insertions, 10 deletions
diff --git a/test/test.scala b/test/test.scala
index 86ab44b..039ee6a 100644
--- a/test/test.scala
+++ b/test/test.scala
@@ -4,7 +4,8 @@ import java.util.concurrent.ConcurrentHashMap
import java.io.File
import java.nio.file._
import java.net.URL
-
+import scala.concurrent._
+import scala.concurrent.duration._
// micro framework
object Main{
def main(_args: Array[String]): Unit = {
@@ -43,13 +44,17 @@ object Main{
val pb = new ProcessBuilder( allArgs :_* )
pb.directory(cbtHome ++ ("/test/" ++ path))
val p = pb.start
- val berr = new BufferedReader(new InputStreamReader(p.getErrorStream));
- val bout = new BufferedReader(new InputStreamReader(p.getInputStream));
- import collection.JavaConversions._
- val err = Stream.continually(berr.readLine()).takeWhile(_ != null).mkString("\n")
- val out = Stream.continually(bout.readLine()).takeWhile(_ != null).mkString("\n")
+ val serr = new InputStreamReader(p.getErrorStream);
+ val sout = new InputStreamReader(p.getInputStream);
+ import scala.concurrent.ExecutionContext.Implicits.global
+ val err = Future(blocking(Iterator.continually(serr.read).takeWhile(_ != -1).map(_.toChar).mkString))
+ val out = Future(blocking(Iterator.continually(sout.read).takeWhile(_ != -1).map(_.toChar).mkString))
p.waitFor
- Result(p.exitValue == 0, out, err)
+ Result(
+ p.exitValue == 0,
+ Await.result( out, Duration.Inf ),
+ Await.result( err, Duration.Inf )
+ )
}
case class Result(exit0: Boolean, out: String, err: String)
def assertSuccess(res: Result, msg: => String)(implicit logger: Logger) = {
@@ -213,15 +218,15 @@ object Main{
{
val res = task("docJar","simple-fixed-cbt")
- assert( res.out endsWith "simple-fixed-cbt_2.11-0.1-javadoc.jar", res.out )
+ assert( res.out endsWith "simple-fixed-cbt_2.11-0.1-javadoc.jar\n", res.out )
assert( res.err contains "model contains", res.err )
- assert( res.err endsWith "documentable templates", res.err )
+ assert( res.err endsWith "documentable templates\n", res.err )
}
{
val res = runCbt("simple", Seq("printArgs","1","2","3"))
assert(res.exit0)
- assert(res.out == "1 2 3", res.out)
+ assert(res.out == "1 2 3\n", res.out)
}
{