mirror of https://github.com/sbt/sbt.git
225 lines
10 KiB
Scala
225 lines
10 KiB
Scala
|
|
package sbt
|
||
|
|
|
||
|
|
import org.specs2._
|
||
|
|
|
||
|
|
class EvictionWarningSpec extends BaseIvySpecification {
|
||
|
|
def is = s2"""
|
||
|
|
|
||
|
|
This is a specification to check the eviction warnings
|
||
|
|
|
||
|
|
Eviction of scala-library whose scalaVersion should
|
||
|
|
be detected $scalaVersionWarn1
|
||
|
|
not be detected if it's diabled $scalaVersionWarn2
|
||
|
|
print out message about the eviction $scalaVersionWarn3
|
||
|
|
print out message about the eviction with callers $scalaVersionWarn4
|
||
|
|
|
||
|
|
Including two (suspect) binary incompatible Java libraries to
|
||
|
|
direct dependencies should
|
||
|
|
be detected as eviction $javaLibWarn1
|
||
|
|
not be detected if it's disabled $javaLibWarn2
|
||
|
|
print out message about the eviction $javaLibWarn3
|
||
|
|
print out message about the eviction with callers $javaLibWarn4
|
||
|
|
|
||
|
|
Including two (suspect) binary compatible Java libraries to
|
||
|
|
direct dependencies should
|
||
|
|
not be detected as eviction $javaLibNoWarn1
|
||
|
|
print out message about the eviction $javaLibNoWarn2
|
||
|
|
|
||
|
|
Including two (suspect) transitively binary incompatible Java libraries to
|
||
|
|
direct dependencies should
|
||
|
|
be not detected as eviction $javaLibTransitiveWarn1
|
||
|
|
be detected if it's enabled $javaLibTransitiveWarn2
|
||
|
|
print out message about the eviction if it's enabled $javaLibTransitiveWarn3
|
||
|
|
|
||
|
|
Including two (suspect) binary incompatible Scala libraries to
|
||
|
|
direct dependencies should
|
||
|
|
be detected as eviction $scalaLibWarn1
|
||
|
|
print out message about the eviction $scalaLibWarn2
|
||
|
|
|
||
|
|
Including two (suspect) binary compatible Scala libraries to
|
||
|
|
direct dependencies should
|
||
|
|
not be detected as eviction $scalaLibNoWarn1
|
||
|
|
print out message about the eviction $scalaLibNoWarn2
|
||
|
|
|
||
|
|
Including two (suspect) transitively binary incompatible Scala libraries to
|
||
|
|
direct dependencies should
|
||
|
|
be not detected as eviction $scalaLibTransitiveWarn1
|
||
|
|
be detected if it's enabled $scalaLibTransitiveWarn2
|
||
|
|
print out message about the eviction if it's enabled $scalaLibTransitiveWarn3
|
||
|
|
"""
|
||
|
|
|
||
|
|
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
|
||
|
|
|
||
|
|
import ShowLines._
|
||
|
|
|
||
|
|
def scalaVersionDeps = Seq(scala2102, akkaActor230)
|
||
|
|
|
||
|
|
def scalaVersionWarn1 = {
|
||
|
|
val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).scalaEvictions must have size (1)
|
||
|
|
}
|
||
|
|
|
||
|
|
def scalaVersionWarn2 = {
|
||
|
|
val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions.withWarnScalaVersionEviction(false), report, log).scalaEvictions must have size (0)
|
||
|
|
}
|
||
|
|
|
||
|
|
def scalaVersionWarn3 = {
|
||
|
|
val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).lines must_==
|
||
|
|
List("Scala version was updated by one of library dependencies:",
|
||
|
|
"\t* org.scala-lang:scala-library:2.10.2 -> 2.10.3",
|
||
|
|
"Run 'evicted' to see detailed eviction warnings")
|
||
|
|
}
|
||
|
|
|
||
|
|
def scalaVersionWarn4 = {
|
||
|
|
val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions.withShowCallers(true), report, log).lines must_==
|
||
|
|
List("Scala version was updated by one of library dependencies:",
|
||
|
|
"\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)")
|
||
|
|
}
|
||
|
|
|
||
|
|
def javaLibDirectDeps = Seq(commonsIo14, commonsIo24)
|
||
|
|
|
||
|
|
def javaLibWarn1 = {
|
||
|
|
val m = module(defaultModuleId, javaLibDirectDeps, Some("2.10.3"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (1)
|
||
|
|
}
|
||
|
|
|
||
|
|
def javaLibWarn2 = {
|
||
|
|
val m = module(defaultModuleId, javaLibDirectDeps, Some("2.10.3"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions.withWarnDirectEvictions(false), report, log).reportedEvictions must have size (0)
|
||
|
|
}
|
||
|
|
|
||
|
|
def javaLibWarn3 = {
|
||
|
|
val m = module(defaultModuleId, javaLibDirectDeps, Some("2.10.3"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).lines must_==
|
||
|
|
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)
|
||
|
|
EvictionWarning(m, defaultOptions.withShowCallers(true), report, log).lines must_==
|
||
|
|
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)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (0)
|
||
|
|
}
|
||
|
|
|
||
|
|
def javaLibNoWarn2 = {
|
||
|
|
val deps = Seq(commonsIo14, commonsIo13)
|
||
|
|
val m = module(defaultModuleId, deps, Some("2.10.3"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).lines must_== Nil
|
||
|
|
}
|
||
|
|
|
||
|
|
def javaLibTransitiveDeps = Seq(unfilteredUploads080, bnfparser10)
|
||
|
|
|
||
|
|
def javaLibTransitiveWarn1 = {
|
||
|
|
val m = module(defaultModuleId, javaLibTransitiveDeps, Some("2.10.3"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (0)
|
||
|
|
}
|
||
|
|
|
||
|
|
def javaLibTransitiveWarn2 = {
|
||
|
|
val m = module(defaultModuleId, javaLibTransitiveDeps, Some("2.10.3"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true), report, log).reportedEvictions must have size (1)
|
||
|
|
}
|
||
|
|
|
||
|
|
def javaLibTransitiveWarn3 = {
|
||
|
|
val m = module(defaultModuleId, javaLibTransitiveDeps, Some("2.10.3"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true).withShowCallers(true), report, log).lines must_==
|
||
|
|
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)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (1)
|
||
|
|
}
|
||
|
|
|
||
|
|
def scalaLibWarn2 = {
|
||
|
|
val deps = Seq(scala2104, akkaActor214, akkaActor234)
|
||
|
|
val m = module(defaultModuleId, deps, Some("2.10.4"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).lines must_==
|
||
|
|
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)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (0)
|
||
|
|
}
|
||
|
|
|
||
|
|
def scalaLibNoWarn2 = {
|
||
|
|
val deps = Seq(scala2104, akkaActor230, akkaActor234)
|
||
|
|
val m = module(defaultModuleId, deps, Some("2.10.4"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).lines must_== Nil
|
||
|
|
}
|
||
|
|
|
||
|
|
def scalaLibTransitiveDeps = Seq(scala2104, bananaSesame04, akkaRemote234)
|
||
|
|
|
||
|
|
def scalaLibTransitiveWarn1 = {
|
||
|
|
val m = module(defaultModuleId, scalaLibTransitiveDeps, Some("2.10.4"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (0)
|
||
|
|
}
|
||
|
|
|
||
|
|
def scalaLibTransitiveWarn2 = {
|
||
|
|
val m = module(defaultModuleId, scalaLibTransitiveDeps, Some("2.10.4"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true), report, log).reportedEvictions must have size (1)
|
||
|
|
}
|
||
|
|
|
||
|
|
def scalaLibTransitiveWarn3 = {
|
||
|
|
val m = module(defaultModuleId, scalaLibTransitiveDeps, Some("2.10.4"))
|
||
|
|
val report = ivyUpdate(m)
|
||
|
|
EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true).withShowCallers(true), report, log).lines must_==
|
||
|
|
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)")
|
||
|
|
}
|
||
|
|
}
|