2016-06-04 14 views
7

Normalmente io uso questo set di opzioni per la compilazione codice Scala:SBT: impostare le opzioni specifiche scalacOptions quando compilazione test

scalacOptions ++= Seq(
    "-deprecation", 
    "-encoding", "UTF-8", 
    "-feature", 
    "-unchecked", 
    "-language:higherKinds", 
    "-language:implicitConversions", 
    "-Xfatal-warnings", 
    "-Xlint", 
    "-Yinline-warnings", 
    "-Yno-adapted-args", 
    "-Ywarn-dead-code", 
    "-Ywarn-numeric-widen", 
    "-Ywarn-value-discard", 
    "-Xfuture", 
    "-Ywarn-unused-import" 
) 

Ma alcuni di loro non giocano bene con ScalaTest, quindi vorrei disabilitare -Ywarn-dead-code e -Ywarn-value-discard durante la compilazione dei test.

ho provato ad aggiungere portata simili

scalacOptions in Compile ++= Seq(...) 

o

scalacOptions in (Compile, compile) ++= Seq(...) 

o anche

val ignoredInTestScalacOptions = Set(
    "-Ywarn-dead-code", 
    "-Ywarn-value-discard" 
) 

scalacOptions in Test ~= { defaultOptions => 
    defaultOptions filterNot ignoredInTestScalacOptions 
} 

ma le prime due opzioni disabilitazione della portata normale di compilazione e anche mentre il secondo doesn influiscono sulle opzioni di compilazione dei test.

Come è possibile avere un elenco separato di opzioni durante la compilazione dei test?

risposta

3

Aveva lo stesso problema, la risposta @Mike Slinn non ha funzionato per me. Credo che le opzioni di test estendano le opzioni di compilazione? Che fine ha fatto il trucco stava rimuovendo esplicitamente opzioni ignorati dalla prova

scalacOptions in Test --= Seq( "-Ywarn-dead-code", "-Ywarn-value-discard")

+1

Esso funziona in SBT, ma non in IntelliJ. Sembra che sia un bug Intellij, quindi accetto questa risposta. – Tvaroh

+2

corretto. Ho compilato un problema: https://youtrack.jetbrains.com/issue/SCL-11824 – LiorH

+0

Grande, grazie, ero troppo pigro per quello. – Tvaroh

3

Perché non definire le opzioni comuni in una variabile (che ho chiamato sopts) e altre opzioni in un'altra variabile (che ho chiamato soptsNoTest)?

val sopts = Seq(
    "-deprecation", 
    "-encoding", "UTF-8", 
    "-feature", 
    "-target:jvm-1.8", 
    "-unchecked", 
    "-Ywarn-adapted-args", 
    "-Ywarn-numeric-widen", 
    "-Ywarn-unused", 
    "-Xfuture", 
    "-Xlint" 
) 
val soptsNoTest = Seq(
    "-Ywarn-dead-code", 
    "-Ywarn-value-discard" 
) 

scalacOptions in (Compile, doc) ++= sopts ++ soptsNoTest 
scalacOptions in Test ++= sopts 

Testato con SBT 0.13.13.

Poiché questa domanda è rimasta senza risposta per così tanto tempo e Scala 2.12 e 2.12.1 sono state rilasciate nel frattempo, ho modificato le opzioni comuni per adattarle.

BTW, non ho alcun problema con ScalaTest che utilizza gli switch citati. Ho solo risposto a questa domanda perché era interessante.

Problemi correlati