From a93970c8ec9c21f83d8f412d310a0d8a49b1bdcc Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Mon, 7 Aug 2017 16:05:05 +0100 Subject: [PATCH 1/2] Dedup check task in project/cross-plugins-defaults --- .../project/cross-plugins-defaults/build.sbt | 46 +++++++------------ 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt b/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt index e33286bfb..8c37b50a5 100644 --- a/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt +++ b/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt @@ -8,35 +8,23 @@ lazy val root = (project in file(".")) .settings( sbtPlugin := true, - TaskKey[Unit]("check") := { - val crossV = (sbtVersion in pluginCrossBuild).value - val sv = projectID.value.extraAttributes("e:scalaVersion") - assert(sbtVersion.value startsWith baseSbt, s"Wrong sbt version: ${sbtVersion.value}") - assert(sv == "2.10", s"Wrong e:scalaVersion: $sv") - assert(scalaBinaryVersion.value == "2.10", s"Wrong Scala binary version: ${scalaBinaryVersion.value}") - assert(crossV startsWith "0.13", s"Wrong `sbtVersion in pluginCrossBuild`: $crossV") - - // crossScalaVersions in app should not be affected - val appCrossScalaVersions = (crossScalaVersions in app).value.toList - val appScalaVersion = (scalaVersion in app).value - assert(appCrossScalaVersions == buildCrossList, s"Wrong `crossScalaVersions in app`: $appCrossScalaVersions") - assert(appScalaVersion startsWith "2.10", s"Wrong `scalaVersion in app`: $appScalaVersion") - }, - - TaskKey[Unit]("check2") := { - val crossV = (sbtVersion in pluginCrossBuild).value - val sv = projectID.value.extraAttributes("e:scalaVersion") - assert(sbtVersion.value startsWith baseSbt, s"Wrong sbt version: ${sbtVersion.value}") - assert(sv == "2.12", s"Wrong e:scalaVersion: $sv") - assert(scalaBinaryVersion.value == "2.12", s"Wrong Scala binary version: ${scalaBinaryVersion.value}") - assert(crossV startsWith "1.0.", s"Wrong `sbtVersion in pluginCrossBuild`: $crossV") - - // ^^ should not affect app's crossScalaVersions - val appCrossScalaVersions = (crossScalaVersions in app).value.toList - val appScalaVersion = (scalaVersion in app).value - assert(appCrossScalaVersions == buildCrossList, s"Wrong `crossScalaVersions in app`: $appCrossScalaVersions") - assert(appScalaVersion startsWith "2.10", s"Wrong `scalaVersion in app`: $appScalaVersion") - } + TaskKey[Unit]("check") := mkCheck("2.10", "0.13").value, + TaskKey[Unit]("check2") := mkCheck("2.12", "1.0").value ) lazy val app = (project in file("app")) + +def mkCheck(scalaBinV: String, sbtBinVer: String) = Def task { + val crossV = (sbtVersion in pluginCrossBuild).value + val sv = projectID.value.extraAttributes("e:scalaVersion") + assert(sbtVersion.value startsWith baseSbt, s"Wrong sbt version: ${sbtVersion.value}") + assert(sv == scalaBinV, s"Wrong e:scalaVersion: $sv") + assert(scalaBinaryVersion.value == scalaBinV, s"Wrong Scala binary version: ${scalaBinaryVersion.value}") + assert(crossV startsWith sbtBinVer, s"Wrong `sbtVersion in pluginCrossBuild`: $crossV") + + // crossScalaVersions in app should not be affected, per se or after ^^ + val appCrossScalaVersions = (crossScalaVersions in app).value.toList + val appScalaVersion = (scalaVersion in app).value + assert(appCrossScalaVersions == buildCrossList, s"Wrong `crossScalaVersions in app`: $appCrossScalaVersions") + assert(appScalaVersion startsWith "2.10", s"Wrong `scalaVersion in app`: $appScalaVersion") +} From 2fc0a6a571453fbb08170ca704f9e398dfbc0ce6 Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Wed, 2 Aug 2017 14:38:10 +0100 Subject: [PATCH 2/2] Fix addSbtPlugin to use the correct version of sbt Fixes #3393 --- main/src/main/scala/sbt/Defaults.scala | 2 +- notes/0.13.17/addSbtPlugin-cross.markdown | 7 +++++++ notes/{0.13.16 => 0.13.17}/example.markdown | 0 .../sbt-test/project/cross-plugins-defaults/build.sbt | 11 +++++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 notes/0.13.17/addSbtPlugin-cross.markdown rename notes/{0.13.16 => 0.13.17}/example.markdown (100%) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index b4b1c0f12..a407690a7 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -2068,7 +2068,7 @@ trait BuildExtra extends BuildCommon with DefExtra { */ def addSbtPlugin(dependency: ModuleID): Setting[Seq[ModuleID]] = libraryDependencies += { - val sbtV = (sbtBinaryVersion in update).value + val sbtV = (sbtBinaryVersion in pluginCrossBuild).value val scalaV = (scalaBinaryVersion in update).value sbtPluginExtra(dependency, sbtV, scalaV) } diff --git a/notes/0.13.17/addSbtPlugin-cross.markdown b/notes/0.13.17/addSbtPlugin-cross.markdown new file mode 100644 index 000000000..aba7194a4 --- /dev/null +++ b/notes/0.13.17/addSbtPlugin-cross.markdown @@ -0,0 +1,7 @@ +### Bug fixes + +- Fixes `addSbtPlugin` to use the correct version of sbt. [#3393][]/[#3397][] by [@dwijnand][] + + [#3393]: https://github.com/sbt/sbt/issues/3393 + [#3397]: https://github.com/sbt/sbt/pull/3397 + [@dwijnand]: http://github.com/dwijnand diff --git a/notes/0.13.16/example.markdown b/notes/0.13.17/example.markdown similarity index 100% rename from notes/0.13.16/example.markdown rename to notes/0.13.17/example.markdown diff --git a/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt b/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt index 8c37b50a5..a70f0506d 100644 --- a/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt +++ b/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt @@ -4,6 +4,8 @@ val buildCrossList = List("2.10.6", "2.11.11", "2.12.2") scalaVersion in ThisBuild := "2.10.6" crossScalaVersions in ThisBuild := buildCrossList +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.7.0") + lazy val root = (project in file(".")) .settings( sbtPlugin := true, @@ -16,12 +18,21 @@ lazy val app = (project in file("app")) def mkCheck(scalaBinV: String, sbtBinVer: String) = Def task { val crossV = (sbtVersion in pluginCrossBuild).value + val crossBinV = (sbtBinaryVersion in pluginCrossBuild).value val sv = projectID.value.extraAttributes("e:scalaVersion") assert(sbtVersion.value startsWith baseSbt, s"Wrong sbt version: ${sbtVersion.value}") assert(sv == scalaBinV, s"Wrong e:scalaVersion: $sv") assert(scalaBinaryVersion.value == scalaBinV, s"Wrong Scala binary version: ${scalaBinaryVersion.value}") assert(crossV startsWith sbtBinVer, s"Wrong `sbtVersion in pluginCrossBuild`: $crossV") + val ur = update.value + val cr = ur.configuration("compile").get + val mr = cr.modules.find(mr => mr.module.organization == "com.eed3si9n" && mr.module.name == "sbt-buildinfo").get + val plugSv = mr.module.extraAttributes("scalaVersion") + val plugSbtV = mr.module.extraAttributes("sbtVersion") + assert(plugSv == scalaBinV, s"Wrong plugin scalaVersion: $plugSv") + assert(plugSbtV == sbtBinVer, s"Wrong plugin scalaVersion: $sbtBinVer") + // crossScalaVersions in app should not be affected, per se or after ^^ val appCrossScalaVersions = (crossScalaVersions in app).value.toList val appScalaVersion = (scalaVersion in app).value