2014-07-27 18:26:12 +02:00
|
|
|
package sbt
|
|
|
|
|
|
|
|
|
|
class EvictionWarningSpec extends BaseIvySpecification {
|
2015-09-05 11:32:07 +02:00
|
|
|
// This is a specification to check the eviction warnings
|
|
|
|
|
|
|
|
|
|
"Eviction of scala-library whose scalaVersion" should "be detected" in scalaVersionWarn1
|
|
|
|
|
it should "not be detected if it's diabled" in scalaVersionWarn2
|
|
|
|
|
it should "print out message about the eviction" in scalaVersionWarn3
|
|
|
|
|
it should "print out message about the eviction with callers" in scalaVersionWarn4
|
|
|
|
|
|
|
|
|
|
"""Including two (suspect) binary incompatible Java libraries to
|
|
|
|
|
direct dependencies""" should "be detected as eviction" in javaLibWarn1
|
|
|
|
|
it should "not be detected if it's disabled" in javaLibWarn2
|
|
|
|
|
it should "print out message about the eviction" in javaLibWarn3
|
|
|
|
|
it should "print out message about the eviction with callers" in javaLibWarn4
|
|
|
|
|
|
|
|
|
|
"""Including two (suspect) binary compatible Java libraries to
|
|
|
|
|
direct dependencies""" should "not be detected as eviction" in javaLibNoWarn1
|
|
|
|
|
it should "print out message about the eviction" in javaLibNoWarn2
|
|
|
|
|
|
|
|
|
|
"""Including two (suspect) transitively binary incompatible Java libraries to
|
|
|
|
|
direct dependencies""" should "be not detected as eviction" in javaLibTransitiveWarn1
|
|
|
|
|
it should "be detected if it's enabled" in javaLibTransitiveWarn2
|
|
|
|
|
it should "print out message about the eviction if it's enabled" in javaLibTransitiveWarn3
|
|
|
|
|
|
|
|
|
|
"""Including two (suspect) binary incompatible Scala libraries to
|
|
|
|
|
direct dependencies""" should "be detected as eviction" in scalaLibWarn1
|
|
|
|
|
it should "print out message about the eviction" in scalaLibWarn2
|
|
|
|
|
|
|
|
|
|
"""Including two (suspect) binary compatible Scala libraries to
|
|
|
|
|
direct dependencies""" should "not be detected as eviction" in scalaLibNoWarn1
|
|
|
|
|
it should "print out message about the eviction" in scalaLibNoWarn2
|
|
|
|
|
|
|
|
|
|
"""Including two (suspect) transitively binary incompatible Scala libraries to
|
|
|
|
|
direct dependencies""" should "be not detected as eviction" in scalaLibTransitiveWarn1
|
|
|
|
|
it should "be detected if it's enabled" in scalaLibTransitiveWarn2
|
|
|
|
|
it should "print out message about the eviction if it's enabled" in scalaLibTransitiveWarn3
|
2014-07-27 18:26:12 +02:00
|
|
|
|
|
|
|
|
def akkaActor214 = ModuleID("com.typesafe.akka", "akka-actor", "2.1.4", Some("compile")) cross CrossVersion.binary
|
|
|
|
|
def akkaActor230 = ModuleID("com.typesafe.akka", "akka-actor", "2.3.0", Some("compile")) cross CrossVersion.binary
|
|
|
|
|
def akkaActor234 = ModuleID("com.typesafe.akka", "akka-actor", "2.3.4", Some("compile")) cross CrossVersion.binary
|
|
|
|
|
def scala2102 = ModuleID("org.scala-lang", "scala-library", "2.10.2", Some("compile"))
|
|
|
|
|
def scala2103 = ModuleID("org.scala-lang", "scala-library", "2.10.3", Some("compile"))
|
|
|
|
|
def scala2104 = ModuleID("org.scala-lang", "scala-library", "2.10.4", Some("compile"))
|
|
|
|
|
def commonsIo13 = ModuleID("commons-io", "commons-io", "1.3", Some("compile"))
|
|
|
|
|
def commonsIo14 = ModuleID("commons-io", "commons-io", "1.4", Some("compile"))
|
|
|
|
|
def commonsIo24 = ModuleID("commons-io", "commons-io", "2.4", Some("compile"))
|
|
|
|
|
def bnfparser10 = ModuleID("ca.gobits.bnf", "bnfparser", "1.0", Some("compile")) // uses commons-io 2.4
|
|
|
|
|
def unfilteredUploads080 = ModuleID("net.databinder", "unfiltered-uploads", "0.8.0", Some("compile")) cross CrossVersion.binary // uses commons-io 1.4
|
|
|
|
|
def bananaSesame04 = ModuleID("org.w3", "banana-sesame", "0.4", Some("compile")) cross CrossVersion.binary // uses akka-actor 2.1.4
|
|
|
|
|
def akkaRemote234 = ModuleID("com.typesafe.akka", "akka-remote", "2.3.4", Some("compile")) cross CrossVersion.binary // uses akka-actor 2.3.4
|
|
|
|
|
|
|
|
|
|
def defaultOptions = EvictionWarningOptions.default
|
|
|
|
|
|
2015-09-05 11:32:07 +02:00
|
|
|
import sbt.internal.util.ShowLines._
|
2014-07-27 18:26:12 +02:00
|
|
|
|
|
|
|
|
def scalaVersionDeps = Seq(scala2102, akkaActor230)
|
|
|
|
|
|
|
|
|
|
def scalaVersionWarn1 = {
|
|
|
|
|
val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).scalaEvictions should have size(1)
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def scalaVersionWarn2 = {
|
|
|
|
|
val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions.withWarnScalaVersionEviction(false), report, log).scalaEvictions should have size(0)
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def scalaVersionWarn3 = {
|
|
|
|
|
val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).lines shouldBe
|
2014-07-27 18:26:12 +02:00
|
|
|
List("Scala version was updated by one of library dependencies:",
|
|
|
|
|
"\t* org.scala-lang:scala-library:2.10.2 -> 2.10.3",
|
2014-08-18 06:54:19 +02:00
|
|
|
"To force scalaVersion, add the following:",
|
|
|
|
|
"\tivyScala := ivyScala.value map { _.copy(overrideScalaVersion = true) }",
|
2014-07-27 18:26:12 +02:00
|
|
|
"Run 'evicted' to see detailed eviction warnings")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def scalaVersionWarn4 = {
|
|
|
|
|
val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions.withShowCallers(true), report, log).lines shouldBe
|
2014-07-27 18:26:12 +02:00
|
|
|
List("Scala version was updated by one of library dependencies:",
|
2014-08-18 06:54:19 +02:00
|
|
|
"\t* org.scala-lang:scala-library:2.10.2 -> 2.10.3 (caller: com.typesafe.akka:akka-actor_2.10:2.3.0, com.example:foo:0.1.0)",
|
|
|
|
|
"To force scalaVersion, add the following:",
|
|
|
|
|
"\tivyScala := ivyScala.value map { _.copy(overrideScalaVersion = true) }")
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def javaLibDirectDeps = Seq(commonsIo14, commonsIo24)
|
|
|
|
|
|
|
|
|
|
def javaLibWarn1 = {
|
|
|
|
|
val m = module(defaultModuleId, javaLibDirectDeps, Some("2.10.3"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(1)
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def javaLibWarn2 = {
|
|
|
|
|
val m = module(defaultModuleId, javaLibDirectDeps, Some("2.10.3"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions.withWarnDirectEvictions(false), report, log).reportedEvictions should have size(0)
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def javaLibWarn3 = {
|
|
|
|
|
val m = module(defaultModuleId, javaLibDirectDeps, Some("2.10.3"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).lines shouldBe
|
2014-07-27 18:26:12 +02:00
|
|
|
List("There may be incompatibilities among your library dependencies.",
|
|
|
|
|
"Here are some of the libraries that were evicted:",
|
|
|
|
|
"\t* commons-io:commons-io:1.4 -> 2.4",
|
|
|
|
|
"Run 'evicted' to see detailed eviction warnings")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def javaLibWarn4 = {
|
|
|
|
|
val m = module(defaultModuleId, javaLibDirectDeps, Some("2.10.3"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions.withShowCallers(true), report, log).lines shouldBe
|
2014-07-27 18:26:12 +02:00
|
|
|
List("There may be incompatibilities among your library dependencies.",
|
|
|
|
|
"Here are some of the libraries that were evicted:",
|
|
|
|
|
"\t* commons-io:commons-io:1.4 -> 2.4 (caller: com.example:foo:0.1.0)")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def javaLibNoWarn1 = {
|
|
|
|
|
val deps = Seq(commonsIo14, commonsIo13)
|
|
|
|
|
val m = module(defaultModuleId, deps, Some("2.10.3"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(0)
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def javaLibNoWarn2 = {
|
|
|
|
|
val deps = Seq(commonsIo14, commonsIo13)
|
|
|
|
|
val m = module(defaultModuleId, deps, Some("2.10.3"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).lines shouldBe Nil
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def javaLibTransitiveDeps = Seq(unfilteredUploads080, bnfparser10)
|
|
|
|
|
|
|
|
|
|
def javaLibTransitiveWarn1 = {
|
|
|
|
|
val m = module(defaultModuleId, javaLibTransitiveDeps, Some("2.10.3"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(0)
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def javaLibTransitiveWarn2 = {
|
|
|
|
|
val m = module(defaultModuleId, javaLibTransitiveDeps, Some("2.10.3"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true), report, log).reportedEvictions should have size(1)
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def javaLibTransitiveWarn3 = {
|
|
|
|
|
val m = module(defaultModuleId, javaLibTransitiveDeps, Some("2.10.3"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true).withShowCallers(true), report, log).lines shouldBe
|
2014-07-27 18:26:12 +02:00
|
|
|
List("There may be incompatibilities among your library dependencies.",
|
|
|
|
|
"Here are some of the libraries that were evicted:",
|
|
|
|
|
"\t* commons-io:commons-io:1.4 -> 2.4 (caller: ca.gobits.bnf:bnfparser:1.0, net.databinder:unfiltered-uploads_2.10:0.8.0)")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def scalaLibWarn1 = {
|
|
|
|
|
val deps = Seq(scala2104, akkaActor214, akkaActor234)
|
|
|
|
|
val m = module(defaultModuleId, deps, Some("2.10.4"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(1)
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def scalaLibWarn2 = {
|
|
|
|
|
val deps = Seq(scala2104, akkaActor214, akkaActor234)
|
|
|
|
|
val m = module(defaultModuleId, deps, Some("2.10.4"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).lines shouldBe
|
2014-07-27 18:26:12 +02:00
|
|
|
List("There may be incompatibilities among your library dependencies.",
|
|
|
|
|
"Here are some of the libraries that were evicted:",
|
|
|
|
|
"\t* com.typesafe.akka:akka-actor_2.10:2.1.4 -> 2.3.4",
|
|
|
|
|
"Run 'evicted' to see detailed eviction warnings")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def scalaLibNoWarn1 = {
|
|
|
|
|
val deps = Seq(scala2104, akkaActor230, akkaActor234)
|
|
|
|
|
val m = module(defaultModuleId, deps, Some("2.10.4"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(0)
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def scalaLibNoWarn2 = {
|
|
|
|
|
val deps = Seq(scala2104, akkaActor230, akkaActor234)
|
|
|
|
|
val m = module(defaultModuleId, deps, Some("2.10.4"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).lines shouldBe Nil
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def scalaLibTransitiveDeps = Seq(scala2104, bananaSesame04, akkaRemote234)
|
|
|
|
|
|
|
|
|
|
def scalaLibTransitiveWarn1 = {
|
|
|
|
|
val m = module(defaultModuleId, scalaLibTransitiveDeps, Some("2.10.4"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(0)
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def scalaLibTransitiveWarn2 = {
|
|
|
|
|
val m = module(defaultModuleId, scalaLibTransitiveDeps, Some("2.10.4"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true), report, log).reportedEvictions should have size(1)
|
2014-07-27 18:26:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def scalaLibTransitiveWarn3 = {
|
|
|
|
|
val m = module(defaultModuleId, scalaLibTransitiveDeps, Some("2.10.4"))
|
|
|
|
|
val report = ivyUpdate(m)
|
2015-09-05 11:32:07 +02:00
|
|
|
EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true).withShowCallers(true), report, log).lines shouldBe
|
2014-07-27 18:26:12 +02:00
|
|
|
List("There may be incompatibilities among your library dependencies.",
|
|
|
|
|
"Here are some of the libraries that were evicted:",
|
|
|
|
|
"\t* com.typesafe.akka:akka-actor_2.10:2.1.4 -> 2.3.4 (caller: com.typesafe.akka:akka-remote_2.10:2.3.4, org.w3:banana-sesame_2.10:0.4, org.w3:banana-rdf_2.10:0.4)")
|
|
|
|
|
}
|
|
|
|
|
}
|