Add plugin cross-build override test

Cover an AutoPlugin that sets pluginCrossBuild / sbtVersion
and a concrete sbt plugin that requires both that AutoPlugin and
SbtPlugin.

Also assert that a plain Scala 2.12 SbtPlugin project keeps the
existing 1.5.8 default, and that an explicit value equal to the
running sbt version is preserved.
This commit is contained in:
Matthias Kurz 2026-06-18 15:31:44 +02:00
parent 5ed34be48c
commit 9d1a346390
No known key found for this signature in database
GPG Key ID: 0B4AAA92F1117EF5
3 changed files with 64 additions and 0 deletions

View File

@ -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"
)

View File

@ -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
)
}

View File

@ -0,0 +1 @@
> check