在SBT

时间:2017-02-01 11:25:38

标签: scala sbt

我的build.sbt中有一个子项目,initialCommands的设置相当长,包含导入列表和一些定义。我想将此作为常规CI的一部分进行测试,因为否则在重构代码后我不会注意到重大更改。我不清楚如何这样做。

  1. 只是运行sbt console似乎没有削减它,因为即使代码无法编译,也总会有一个“成功”的退出代码。
  2. 将代码移出到特殊源文件中定义的对象将无济于事,因为我需要存在导入列表(我不想将整个代码库变为现象)。
  3. 将代码移出到源文件中,然后使用:load加载代码也始终会提供成功的退出代码。
  4. 我发现了scala -e,但在我的机器上发生了奇怪的事情(请参阅下面的错误日志)。
  5. 这是Scala 2.12。

    $ scala -e '1'  
    cat: /release: No such file or directory
    Exception in thread "main" java.net.UnknownHostException: <my-host-name-here>: <my-host-name-here>: Name or service not known
    

1 个答案:

答案 0 :(得分:3)

您可以像生成任何其他测试文件一样生成文件并运行它:

(sourceGenerators in Test) += Def.task {
  val contents = """object TestRepl {
{{}}
}""".replace("{{}}", (initialCommands in console).value)
  val file = (sourceManaged in Test).value / "repltest.scala"
  IO.write(file, contents)
  Seq(file)
}.taskValue