新しい種類のテスト用のsbtプラグインを作成したいと思います。簡単なことを保つために、私はsbt docsで言及されているものと同様の小さなファズテストプラグインを作成しました。sbtプラグイン - 独自の設定クラスパス不完全
私のプラグインクラスは、現在、次のようになります。
package sbtfuzz
import sbt._, Keys._
object FuzzPlugin extends sbt.AutoPlugin {
override def requires = plugins.JvmPlugin
override def trigger = allRequirements
object autoImport {
lazy val Fuzz = config("fuzz") extend(Compile)
}
import autoImport._
lazy val baseFuzzSettings: Seq[Def.Setting[_]] = Seq(
test := {
println("fuzz test")
}
)
override lazy val projectSettings = inConfig(Fuzz)(baseFuzzSettings) ++ inConfig(Fuzz)(Defaults.compileSettings)
}
私は、ドキュメント内のコードにcomaprisonに追加唯一のことは、コードをコンパイルするために取得タスクへinConfig(Fuzz)(Defaults.compileSettings)
です。
sbt fuzz:compile
を実行すると、src/fuzz/scala
のソースがコンパイルされます。しかし、ソースが実際のプロジェクトコードに依存している場合(すべてのテストと同様)、クラスが見つからないためコンパイルが失敗します。
[info] * Attributed(.../fuzz/target/scala-2.10/sbt-0.13/fuzz-classes)
test:fullClasspath
は、プロジェクトのクラスだけでなく、その中の依存関係を持っているのに対し:
[info] * Attributed(.../fuzz/target/scala-2.10/sbt-0.13/test-classes)
[info] * Attributed(.../fuzz/target/scala-2.10/sbt-0.13/classes)
[info] * Attributed(~/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.10.4.jar)
[info] * Attributed(~/.ivy2/cache/org.scala-sbt/sbt/jars/sbt-0.13.13.jar)
...
この方法test:compile
が正常にテストクラスをコンパイルすることができます私はfuzz:fullClasspath
にエントリが1つだけ持っているので、それはだと思いますfuzz:compile
ではありません。
どのように私は私のfuzz
設定を構成することができますtest
コンフィギュレーションのような方法は、すべてのプロジェクトの依存関係を含め、ありますか?
ありがとうございます!
編集:私は成功した私のファズ・クラスをコンパイルすることができます。これにより
lazy val baseFuzzSettings: Seq[Def.Setting[_]] = Seq(
fullClasspath in Fuzz ++= (dependencyClasspath in Test).value,
dependencyClasspath in Fuzz ++= (dependencyClasspath in Test).value,
...
)
: 私は(私の意見では)かなり汚い回避策を見つけました。これを行うにはもっと元気な方法がありますか?ありがとう!
残念ながら、私はまだクラスパスに 'fuzz-classes'しかありません。私は 'autoImport'を' Test'から拡張するように変更し、プロジェクト設定を 'lazy val projectSettings = inConfig(Fuzz)(Defaults.testSettings ++ Defaults.testTasks ++ baseFuzzSettings)'に変更しました。 – amuttsch
私が考えることができるもう一つのことは、プロジェクトの 'build.sbt'ファイルで' configs(Fuzz) 'を呼び出すことだけです。私は設定を介してそれを行う方法がわかりません。 – jkinkead