diff --git a/modules/lm-coursier/src/main/scala/coursier/lmcoursier/ToSbt.scala b/modules/lm-coursier/src/main/scala/coursier/lmcoursier/ToSbt.scala index 2d6bb1748..2a969138d 100644 --- a/modules/lm-coursier/src/main/scala/coursier/lmcoursier/ToSbt.scala +++ b/modules/lm-coursier/src/main/scala/coursier/lmcoursier/ToSbt.scala @@ -27,12 +27,12 @@ object ToSbt { } } - val moduleId = caching[(Dependency, Map[String, String]), ModuleID] { - case (dependency, extraProperties) => + val moduleId = caching[(Dependency, String, Map[String, String]), ModuleID] { + case (dependency, version, extraProperties) => sbt.librarymanagement.ModuleID( dependency.module.organization.value, dependency.module.name.value, - dependency.version + version ).withConfigurations( Some(dependency.configuration.value) ).withExtraAttributes( @@ -88,7 +88,7 @@ object ToSbt { val callers = dependees.map { case (dependee, dependeeProj) => Caller( - ToSbt.moduleId(dependee, dependeeProj.properties.toMap), + ToSbt.moduleId(dependee, dependeeProj.version, dependeeProj.properties.toMap), dependeeProj.configurations.keys.toVector.map(c => ConfigRef(c.value)), dependee.module.attributes ++ dependeeProj.properties, // FIXME Set better values here @@ -100,7 +100,7 @@ object ToSbt { } ModuleReport( - ToSbt.moduleId(dependency, project.properties.toMap), + ToSbt.moduleId(dependency, project.version, project.properties.toMap), sbtArtifacts.toVector, sbtMissingArtifacts.toVector ) @@ -236,7 +236,7 @@ object ToSbt { // appears first in the update report, see https://github.com/coursier/coursier/issues/650 val dep = subRes.rootDependencies.head val (_, proj) = subRes.projectCache(dep.moduleVersion) - val mod = ToSbt.moduleId(dep, proj.properties.toMap) + val mod = ToSbt.moduleId(dep, proj.version, proj.properties.toMap) val (main, other) = reports.partition { r => r.module.organization == mod.organization && r.module.name == mod.name && diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/version-interval/build.sbt b/modules/sbt-coursier/src/sbt-test/shared-2/version-interval/build.sbt new file mode 100644 index 000000000..efeaf236e --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-2/version-interval/build.sbt @@ -0,0 +1,35 @@ + +libraryDependencies += "org.json4s" %% "json4s-native" % "[3.3.0,3.5.0)" + + +lazy val actualVersionCheck = taskKey[Unit]("") + +actualVersionCheck := { + + val log = streams.value.log + + val configReport = update.value + .configuration(Compile) + .getOrElse { + sys.error("compile configuration not found in update report") + } + + val modules = configReport + .modules + .map(_.module) + + assert(modules.nonEmpty) + assert(modules.exists(_.name.startsWith("json4s-native"))) + + val wrongModules = modules.filter { m => + val v = m.revision + v.contains("[") || v.contains("]") || v.contains("(") || v.contains(")") + } + + if (wrongModules.nonEmpty) { + log.error("Found unexpected intervals in revisions") + for (m <- wrongModules) + log.error(s" ${m.organization}:${m.name}:${m.revision}") + sys.error("Found intervals in revisions") + } +} diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/version-interval/project/plugins.sbt b/modules/sbt-coursier/src/sbt-test/shared-2/version-interval/project/plugins.sbt new file mode 100644 index 000000000..503ac2871 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-2/version-interval/project/plugins.sbt @@ -0,0 +1,13 @@ +addSbtPlugin { + + val name = sys.props.getOrElse( + "plugin.name", + sys.error("plugin.name Java property not set") + ) + val version = sys.props.getOrElse( + "plugin.version", + sys.error("plugin.version Java property not set") + ) + + "io.get-coursier" % name % version +} diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/version-interval/test b/modules/sbt-coursier/src/sbt-test/shared-2/version-interval/test new file mode 100644 index 000000000..99803d595 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-2/version-interval/test @@ -0,0 +1 @@ +> actualVersionCheck