diff --git a/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala b/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala index 73003bcb7..88dd4241c 100644 --- a/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala +++ b/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala @@ -321,7 +321,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine { val merged = (modules groupBy { m => (m.module.organization, m.module.name, m.module.revision) }).toSeq.toVector flatMap { case ((org, name, version), xs) => if (xs.size < 2) xs - else Vector(xs.head.copy(evicted = xs exists { _.evicted }, callers = xs flatMap { _.callers })) + else Vector(xs.head.copy(evicted = xs forall { _.evicted }, callers = xs flatMap { _.callers })) } val conflicts = merged filter { m => !m.evicted && m.problem.isEmpty } if (conflicts.size < 2) merged diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution/a/A.java b/sbt/src/sbt-test/dependency-management/cached-resolution-basic/a/A.java similarity index 100% rename from sbt/src/sbt-test/dependency-management/cached-resolution/a/A.java rename to sbt/src/sbt-test/dependency-management/cached-resolution-basic/a/A.java diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution/c/C.java b/sbt/src/sbt-test/dependency-management/cached-resolution-basic/c/C.java similarity index 100% rename from sbt/src/sbt-test/dependency-management/cached-resolution/c/C.java rename to sbt/src/sbt-test/dependency-management/cached-resolution-basic/c/C.java diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-basic/multi.sbt similarity index 100% rename from sbt/src/sbt-test/dependency-management/cached-resolution/multi.sbt rename to sbt/src/sbt-test/dependency-management/cached-resolution-basic/multi.sbt diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution/test b/sbt/src/sbt-test/dependency-management/cached-resolution-basic/test similarity index 100% rename from sbt/src/sbt-test/dependency-management/cached-resolution/test rename to sbt/src/sbt-test/dependency-management/cached-resolution-basic/test diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-conflicts/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-conflicts/multi.sbt new file mode 100644 index 000000000..3efee9d49 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-conflicts/multi.sbt @@ -0,0 +1,62 @@ +// https://github.com/sbt/sbt/issues/1710 +lazy val check = taskKey[Unit]("Runs the check") + +def commonSettings: Seq[Def.Setting[_]] = + Seq( + organization := "com.example", + version := "0.1.0", + ivyPaths := new IvyPaths( (baseDirectory in ThisBuild).value, Some((baseDirectory in LocalRootProject).value / "ivy-cache")), + dependencyCacheDirectory := (baseDirectory in LocalRootProject).value / "dependency", + scalaVersion := "2.10.4", + fullResolvers := fullResolvers.value.filterNot(_.name == "inter-project") + ) + +def cachedResolutionSettings: Seq[Def.Setting[_]] = + commonSettings ++ Seq( + updateOptions := updateOptions.value.withCachedResolution(true) + ) + +lazy val X1 = project. + settings(commonSettings: _*). + settings( + libraryDependencies ++= Seq( + "com.example" %% "y1" % "0.1.0" % "compile->compile;runtime->runtime", + "com.example" %% "y2" % "0.1.0" % "compile->compile;runtime->runtime") + ) + +lazy val Y1 = project. + settings(commonSettings: _*). + settings( + name := "y1", + libraryDependencies ++= Seq( + // this includes slf4j 1.7.5 + "com.ning" % "async-http-client" % "1.8.14", + // this includes slf4j 1.6.6 + "com.twitter" % "summingbird-core_2.10" % "0.5.0", + "org.slf4j" % "slf4j-api" % "1.6.6" force() + ) + ) + +lazy val Y2 = project. + settings(commonSettings: _*). + settings( + name := "y2", + libraryDependencies ++= Seq( + // this includes slf4j 1.6.6 + "com.twitter" % "summingbird-core_2.10" % "0.5.0", + // this includes slf4j 1.7.5 + "com.ning" % "async-http-client" % "1.8.14") + ) + +lazy val root = (project in file(".")). + settings( + organization in ThisBuild := "org.example", + version in ThisBuild := "1.0", + check := { + val x1cp = (externalDependencyClasspath in Compile in X1).value.sortBy {_.data.getName} + // sys.error("slf4j-api is not found on X1" + x1cp) + if (!(x1cp exists {_.data.getName contains "slf4j-api"})) { + sys.error("slf4j-api is not found on X1" + x1cp) + } + } + ) diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-conflicts/test b/sbt/src/sbt-test/dependency-management/cached-resolution-conflicts/test new file mode 100644 index 000000000..f91a13d11 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-conflicts/test @@ -0,0 +1,7 @@ +> debug + +> Y1/publishLocal + +> Y2/publishLocal + +> check diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution3/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-exclude/multi.sbt similarity index 100% rename from sbt/src/sbt-test/dependency-management/cached-resolution3/multi.sbt rename to sbt/src/sbt-test/dependency-management/cached-resolution-exclude/multi.sbt diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution3/test b/sbt/src/sbt-test/dependency-management/cached-resolution-exclude/test similarity index 100% rename from sbt/src/sbt-test/dependency-management/cached-resolution3/test rename to sbt/src/sbt-test/dependency-management/cached-resolution-exclude/test diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution2/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-force/multi.sbt similarity index 100% rename from sbt/src/sbt-test/dependency-management/cached-resolution2/multi.sbt rename to sbt/src/sbt-test/dependency-management/cached-resolution-force/multi.sbt diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution2/test b/sbt/src/sbt-test/dependency-management/cached-resolution-force/test similarity index 100% rename from sbt/src/sbt-test/dependency-management/cached-resolution2/test rename to sbt/src/sbt-test/dependency-management/cached-resolution-force/test diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution4/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-overrides/multi.sbt similarity index 100% rename from sbt/src/sbt-test/dependency-management/cached-resolution4/multi.sbt rename to sbt/src/sbt-test/dependency-management/cached-resolution-overrides/multi.sbt diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution4/test b/sbt/src/sbt-test/dependency-management/cached-resolution-overrides/test similarity index 100% rename from sbt/src/sbt-test/dependency-management/cached-resolution4/test rename to sbt/src/sbt-test/dependency-management/cached-resolution-overrides/test