diff --git a/sbt-app/src/sbt-test/plugins/plugin-cross-sbt-version-override/build.sbt b/sbt-app/src/sbt-test/plugins/plugin-cross-sbt-version-override/build.sbt new file mode 100644 index 000000000..92d17d37c --- /dev/null +++ b/sbt-app/src/sbt-test/plugins/plugin-cross-sbt-version-override/build.sbt @@ -0,0 +1,38 @@ +lazy val check = taskKey[Unit]("Checks pluginCrossBuild / sbtVersion") + +lazy val root = (project in file(".")) + .enablePlugins(ConcreteSbtPlugin) + .settings( + scalaVersion := "2.12.21", + check := { + val actual = (pluginCrossBuild / sbtVersion).value + val expected = "1.12.12" + assert(actual == expected, s"Expected pluginCrossBuild / sbtVersion to be $expected, got $actual") + + val defaultActual = (defaultPlugin / pluginCrossBuild / sbtVersion).value + val defaultExpected = "1.5.8" + assert( + defaultActual == defaultExpected, + s"Expected default pluginCrossBuild / sbtVersion to be $defaultExpected, got $defaultActual" + ) + + val sameAsRunningActual = (sameAsRunning / pluginCrossBuild / sbtVersion).value + val sameAsRunningExpected = sbtVersion.value + assert( + sameAsRunningActual == sameAsRunningExpected, + s"Expected explicit pluginCrossBuild / sbtVersion to be $sameAsRunningExpected, got $sameAsRunningActual" + ) + } + ) + +lazy val defaultPlugin = (project in file("default-plugin")) + .enablePlugins(SbtPlugin) + .settings( + scalaVersion := "2.12.21" + ) + +lazy val sameAsRunning = (project in file("same-as-running")) + .enablePlugins(SameAsRunningPlugin) + .settings( + scalaVersion := "2.12.21" + ) diff --git a/sbt-app/src/sbt-test/plugins/plugin-cross-sbt-version-override/project/PluginCrossSbtVersionOverridePlugin.scala b/sbt-app/src/sbt-test/plugins/plugin-cross-sbt-version-override/project/PluginCrossSbtVersionOverridePlugin.scala new file mode 100644 index 000000000..2233d1c73 --- /dev/null +++ b/sbt-app/src/sbt-test/plugins/plugin-cross-sbt-version-override/project/PluginCrossSbtVersionOverridePlugin.scala @@ -0,0 +1,25 @@ +import sbt._ +import sbt.Keys._ + +object PluginCrossSbtVersionOverridePlugin extends AutoPlugin { + override def projectSettings: Seq[Def.Setting[?]] = Seq( + pluginCrossBuild / sbtVersion := { + scalaBinaryVersion.value match { + case "2.12" => "1.12.12" + case _ => sbtVersion.value + } + } + ) +} + +object ConcreteSbtPlugin extends AutoPlugin { + override def requires = PluginCrossSbtVersionOverridePlugin && plugins.SbtPlugin +} + +object SameAsRunningPlugin extends AutoPlugin { + override def requires = plugins.SbtPlugin + + override def projectSettings: Seq[Def.Setting[?]] = Seq( + pluginCrossBuild / sbtVersion := sbtVersion.value + ) +} diff --git a/sbt-app/src/sbt-test/plugins/plugin-cross-sbt-version-override/test b/sbt-app/src/sbt-test/plugins/plugin-cross-sbt-version-override/test new file mode 100644 index 000000000..15675b169 --- /dev/null +++ b/sbt-app/src/sbt-test/plugins/plugin-cross-sbt-version-override/test @@ -0,0 +1 @@ +> check