Closed dwijnand closed 7 years ago
Here's where I give up: Ivy seems to behave differently between 0.13.16-M1 and 0.13.16-RC1 because "rc" has "special meaning" in Ivy, while the "m" for milestone does not.
The result of that is that:
org.scala-sbt:sbt:0.13.16-M1
is evicted over org.scala-sbt:sbt:0.13.16-SNAPSHOT
, but insteadorg.scala-sbt:sbt:0.13.16-SNAPSHOT
is evicted over org.scala-sbt:sbt:0.13.16-RC1
because "latest-revision" ✌️😒✌️
So the sbt development lesson of the day for today is: beware that when upgrading sbt's build to or from milestone releases that eviction results might be different.
I'll fix https://github.com/sbt/sbt/pull/3408 now.
Before I throw away the code, here's the check task I wrote to check:
TaskKey[Unit]("check") := {
val cp = (managedClasspath in Test in z).value
assert(
cp exists (_.toString contains "junit"),
s"""
|z/test:managedClasspath doesn't contain junit, it contains:
|${classpathToString(cp)}
""".trim.stripMargin
)
}
def classpathToString(cp: Def.Classpath) =
cp map (a => s"${a.metadata(Keys.moduleID.key)}: ${a.data}") mkString "\n"
steps
Set sbt.version to 0.13.16-RC1 (or 0.13.16) and use the following build:
problem
Invoke
show z/test:managedClasspath
:expectation
I expect JUnit to be present in the project z's test configuration managed classpath.
notes
This is the
z/test:managedClasspath
using sbt 0.13.16-M1:The original bug is in upgrading sbt/sbt's 0.13 branch build from 0.13.16-M1 to 0.13.16 in #3408.