2017-02-01 8 views
2

У меня есть подпроект в моем build.sbt с довольно длинной настройкой для initialCommands, содержащей список импортов и некоторые определения. Я бы хотел проверить это как часть обычного CI, потому что иначе я не буду замечать нарушения изменений после рефакторинга кода. Мне непонятно, как это сделать.Test initialCommands в SBT

  1. Просто работает sbt console, похоже, не режет его, потому что всегда есть «успешный» код выхода, даже если код не компилируется.
  2. Перемещение кода в объект, определенный в специальном исходном файле, не поможет, потому что мне нужен список импорта, который должен присутствовать (и я не хочу подделывать всю свою базу кода).
  3. Перемещение кода в исходный файл, а затем загрузка с :load также всегда дает успешный код выхода.
  4. Я узнал о scala -e, но это делает странные вещи на моей машине (см. Журнал ошибок ниже).

Это 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 

ответ

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 
+0

крутая идея, спасибо! – larsrh