summaryrefslogtreecommitdiff
path: root/scalaplugin/src/test
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-11-26 15:49:17 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2017-11-26 15:49:17 -0800
commitb12833e99e1e0939ec35ec31a15631e777cd7446 (patch)
tree210cc3ad55e31dbadd02844e71bf508258873484 /scalaplugin/src/test
parent4219303cb85c5f892c548b129d6350a20df51518 (diff)
downloadmill-b12833e99e1e0939ec35ec31a15631e777cd7446.tar.gz
mill-b12833e99e1e0939ec35ec31a15631e777cd7446.tar.bz2
mill-b12833e99e1e0939ec35ec31a15631e777cd7446.zip
Acyclic test suite works now that we can fork and set a proper working directory, but only when run alone (???)
Diffstat (limited to 'scalaplugin/src/test')
-rw-r--r--scalaplugin/src/test/scala/mill/scalaplugin/AcyclicTests.scala64
1 files changed, 40 insertions, 24 deletions
diff --git a/scalaplugin/src/test/scala/mill/scalaplugin/AcyclicTests.scala b/scalaplugin/src/test/scala/mill/scalaplugin/AcyclicTests.scala
index 0fc7d4af..61da0a47 100644
--- a/scalaplugin/src/test/scala/mill/scalaplugin/AcyclicTests.scala
+++ b/scalaplugin/src/test/scala/mill/scalaplugin/AcyclicTests.scala
@@ -26,6 +26,7 @@ object AcyclicBuild{
)
object test extends this.Tests{
def basePath = AcyclicTests.workspacePath
+ override def forkWorkingDir = pwd/'scalaplugin/'src/'test/'resource/'acyclic
override def ivyDeps = Seq(
Dep("com.lihaoyi", "utest", "0.6.0")
)
@@ -38,28 +39,29 @@ object AcyclicTests extends TestSuite{
val workspacePath = pwd / 'target / 'workspace / 'acyclic
val srcPath = pwd / 'scalaplugin / 'src / 'test / 'resource / 'acyclic
val tests = Tests{
- 'acyclic - {
- rm(workspacePath)
- mkdir(workspacePath/up)
- cp(srcPath, workspacePath)
- val mapping = Discovered.mapping(AcyclicBuild)
- def eval[T](t: Task[T]): Either[Result.Failing, (T, Int)] = {
- val evaluator = new Evaluator(workspacePath, mapping, _ => ())
- val evaluated = evaluator.evaluate(OSet(t))
-
- if (evaluated.failing.keyCount == 0){
- Right(Tuple2(
- evaluated.rawValues(0).asInstanceOf[Result.Success[T]].value,
- evaluated.evaluated.collect{
- case t: Target[_] if mapping.contains(t) => t
- case t: mill.define.Command[_] => t
- }.size
- ))
- }else{
- Left(evaluated.failing.lookupKey(evaluated.failing.keys().next).items.next())
- }
+ rm(workspacePath)
+ mkdir(workspacePath/up)
+ cp(srcPath, workspacePath)
+ val mapping = Discovered.mapping(AcyclicBuild)
+ def eval[T](t: Task[T]): Either[Result.Failing, (T, Int)] = {
+ val evaluator = new Evaluator(workspacePath, mapping, _ => ())
+ val evaluated = evaluator.evaluate(OSet(t))
+
+ if (evaluated.failing.keyCount == 0){
+ Right(Tuple2(
+ evaluated.rawValues(0).asInstanceOf[Result.Success[T]].value,
+ evaluated.evaluated.collect{
+ case t: Target[_] if mapping.contains(t) => t
+ case t: mill.define.Command[_] => t
+ }.size
+ ))
+ }else{
+ Left(evaluated.failing.lookupKey(evaluated.failing.keys().next).items.next())
}
+ }
+ val packageScala = workspacePath/'src/'main/'scala/'acyclic/"package.scala"
+ 'acyclic - {
// We can compile
val Right((pathRef, evalCount)) = eval(AcyclicBuild.acyclic("2.12.4").compile)
val outputPath = pathRef.path
@@ -74,7 +76,6 @@ object AcyclicTests extends TestSuite{
val Right((_, evalCount2)) = eval(AcyclicBuild.acyclic("2.12.4").compile)
assert(evalCount2 == 0)
- val packageScala = workspacePath/'src/'main/'scala/'acyclic/"package.scala"
write.append(packageScala, "\n")
// Caches are invalidated if code is changed
@@ -89,10 +90,25 @@ object AcyclicTests extends TestSuite{
write.write(packageScala, read(packageScala).dropRight(3))
- val Right((_, _)) = eval(AcyclicBuild.acyclic("2.12.4").compile)
+ val Right(_) = eval(AcyclicBuild.acyclic("2.12.4").compile)
+
+ // Still doesn't work =(
+ // val Right(_) = eval(AcyclicBuild.acyclic("2.12.4").test.forkTest())
+ }
+
+ 'tests - {
+ // Tests can run
+ val Right(_) = eval(AcyclicBuild.acyclic("2.12.4").test.forkTest())
+
+ // Be broken
+ write.append(packageScala, "\n}}")
+ eval(AcyclicBuild.acyclic("2.12.4").test.compile)
+ val Left(_) = eval(AcyclicBuild.acyclic("2.12.4").test.forkTest())
+
+ // And run again when fixed
+ write.write(packageScala, read(packageScala).dropRight(3))
-// Tests can run
-// val Right((_, _)) = eval(AcyclicBuild.acyclic("2.12.4").test.test())
+ val Right(_) = eval(AcyclicBuild.acyclic("2.12.4").test.forkTest())
}
}
}