mirror of https://github.com/sbt/sbt.git
Ensure returned resolution artifacts are unique
Should hopefully fix issues sometimes seen on CIs using sbt-coursier
This commit is contained in:
parent
c09db18afd
commit
8de5425e4d
|
|
@ -885,8 +885,8 @@ final case class Resolution(
|
|||
.getOrElse(Map.empty)
|
||||
)
|
||||
|
||||
private def artifacts0(overrideClassifiers: Option[Seq[String]]): Seq[Artifact] =
|
||||
for {
|
||||
private def artifacts0(overrideClassifiers: Option[Seq[String]]): Seq[Artifact] = {
|
||||
val res = for {
|
||||
dep <- minDependencies.toSeq
|
||||
(source, proj) <- projectCache
|
||||
.get(dep.moduleVersion)
|
||||
|
|
@ -895,6 +895,9 @@ final case class Resolution(
|
|||
.artifacts(dep, proj, overrideClassifiers)
|
||||
} yield artifact
|
||||
|
||||
res.distinct
|
||||
}
|
||||
|
||||
def classifiersArtifacts(classifiers: Seq[String]): Seq[Artifact] =
|
||||
artifacts0(Some(classifiers))
|
||||
|
||||
|
|
|
|||
|
|
@ -271,6 +271,43 @@ object CentralTests extends TestSuite {
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
'artifacts - {
|
||||
'uniqueness - {
|
||||
async {
|
||||
val deps = Set(
|
||||
Dependency(
|
||||
Module("org.scala-lang", "scala-compiler"), "2.11.8"
|
||||
),
|
||||
Dependency(
|
||||
Module("org.scala-js", "scalajs-compiler_2.11.8"), "0.6.8"
|
||||
)
|
||||
)
|
||||
|
||||
val res = await(resolve(deps))
|
||||
|
||||
assert(res.errors.isEmpty)
|
||||
assert(res.conflicts.isEmpty)
|
||||
assert(res.isDone)
|
||||
|
||||
val artifacts = res.artifacts
|
||||
|
||||
val map = artifacts.groupBy(a => a)
|
||||
|
||||
val nonUnique = map.filter {
|
||||
case (_, l) => l.length > 1
|
||||
}
|
||||
|
||||
if (nonUnique.nonEmpty)
|
||||
println(
|
||||
"Found non unique artifacts:\n" +
|
||||
nonUnique.keys.toVector.map(" " + _).mkString("\n")
|
||||
)
|
||||
|
||||
assert(nonUnique.isEmpty)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue