在我的Play项目中,我尝试在标准Play的test
任务之前运行我的JavaScript测试。我编写了一个SBT任务,这个工作正常,但我只想在JavaScript测试通过时运行Play test
任务。目前,Play test
任务运行JavaScript测试所发生的任何事情。
我的build.sbt
如下所示:
val jsTest = taskKey[Int]("jsTest")
jsTest in Test := {
"karma start karma.conf.js" !
}
test := {
val exitCode = (jsTest in Test).value
if(exitCode == 0) {
(test in Test).value
}
}
正如我所说,无论test.value
如何,始终会执行exitCode
。如何以test
?
jsTest
答案 0 :(得分:2)
@SethTisue在他提到dynamic task concept in SBT时是对的。
将以下内容添加到build.sbt
:
lazy val jsTest = taskKey[Int]("jsTest")
jsTest in Test := {
"karma start karma.conf.js" !
}
test := Def.taskDyn {
val exitCode = (jsTest in Test).value
if(exitCode == 0)
Def.task {
(test in Test).value
}
else Def.task()
}.value
当"karma start karma.conf.js" !
替换为0
或非0
时,似乎工作正常。