2014-06-06 11 views
6

Ich versuche, Aufgabe zu schreiben, die Eingabeargument nimmt, es testOnly Aufgabe übergeben und ausführen. Es funktioniert perfekt, aber ich kann keine Systemeigenschaften in dieser Aufgabe festlegen, die im Test sichtbar sein wird. Diese Eigenschaften sollten andere Aufgaben nicht beeinträchtigen und sollten nur in dieser benutzerdefinierten Aufgabe sichtbar sein.sbt set java optionen in dynamische Aufgabe

Hier ist mein Codebeispiel

lazy val myTestOnly = InputKey[Unit]("myTestOnly", "test only with special sys prop") 

val myTestOnlyTask = myTestOnly := { 
    Def.inputTaskDyn { 
    val args: Seq[String] = spaceDelimited("").parsed 

    javaOptions in Test ++= Seq("-Dfoo=bar") // does not work 
    testOptions += Tests.Setup(() => System.setProperty("foo", "bar")) //does not work 
    System.setProperty("foo", "bar") // does not work 

    (testOnly in Test).toTask(" " + args.head) 
    }.evaluated 
} 

Als ich in sbt Konsole

myTestOnly com.sampleTest 
laufen

testOnly führt aber "foo" Eigenschaft ist nicht sichtbar

So ist die qustion wie einstellen Eigenschaft in der Aufgabendefinition, die nur für die aktuelle Aufgabe in der Testlaufzeit sichtbar ist?

Antwort

0

in build.sbt:

val currentTimestamp: String = 
    new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()) 
val targetDir 
    : String = baseDirectory + "/project/target/mtd/" + currentTimestamp 

javaOptions in Test ++= Seq("-Ddynamic_dir_to_set=" + targetDir) 

und sbt test wird für die dynamic_dir_to_set env var Garantiewert haben.

Paar Theorie Links Trog zu gehen:

http://www.scala-sbt.org/0.13.2/docs/Detailed-Topics/Forking.html#change-working-directory http://www.scala-sbt.org/0.13/docs/Plugins-and-Best-Practices.html

Verwandte Themen