Merge pull request #383 from eed3si9n/wip/conflict_warning

Fix cross-Scala suffix conflict warning
This commit is contained in:
eugene yokota 2021-07-05 12:37:47 -04:00 committed by GitHub
commit 40a2166318
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 1 deletions

View File

@ -59,7 +59,7 @@ object ConflictWarning {
private[this] def groupByRawName(ms: Seq[ModuleID]): Map[(String, String), Seq[ModuleID]] =
ms.groupBy(m => (m.organization, dropCrossSuffix(m.name)))
private[this] val CrossSuffixPattern = """(.+)_(\d+\.\d+(?:\.\d+)?(?:-.+)?)""".r
private[this] val CrossSuffixPattern = """(.+)_(\d+(?:\.\d+)?(?:\.\d+)?(?:-.+)?)""".r
private[this] def dropCrossSuffix(s: String): String = s match {
case CrossSuffixPattern(raw, _) => raw
case _ => s

View File

@ -0,0 +1,40 @@
package sbt.internal.librarymanagement
import sbt.librarymanagement._
import sbt.librarymanagement.syntax._
object ConflictWarningSpec extends BaseIvySpecification {
test("it should print out message about the cross-Scala conflict") {
var found = false
val deps = Vector(
`scala2.13.6`,
`cats-effect3.1.1`,
`cats-core2.6.1`.cross(CrossVersion.for3Use2_13),
)
val m = module(defaultModuleId, deps, Some("3.0.1-RC2"))
val report = ivyUpdate(m)
val w = ConflictWarning.default("foo")
try {
ConflictWarning(w, report, log)
} catch {
case e: Throwable =>
found = true
assert(
e.getMessage.linesIterator.toList.head
.startsWith("Conflicting cross-version suffixes in")
)
}
if (!found) {
sys.error("conflict warning was expected, but didn't happen sbt/sbt#6578")
}
}
lazy val `scala2.13.6` =
ModuleID("org.scala-lang", "scala-library", "2.13.6").withConfigurations(Some("compile"))
lazy val `cats-effect3.1.1` =
("org.typelevel" %% "cats-effect" % "3.1.1").withConfigurations(Some("compile"))
lazy val `cats-core2.6.1` =
("org.typelevel" %% "cats-core" % "2.6.1").withConfigurations(Some("compile"))
}