From 655c2ac5d159b5e510b2a0f2cc41868befb1d531 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 13 Jan 2018 00:35:11 -0500 Subject: [PATCH 1/6] Make ScriptedPlugin not a triggered plugin Fixes #3514 --- scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala b/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala index a7bf73543..9ba17d09c 100644 --- a/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala +++ b/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala @@ -16,7 +16,7 @@ import java.lang.reflect.Method object ScriptedPlugin extends AutoPlugin { override def requires = plugins.JvmPlugin - override def trigger = allRequirements + object autoImport { val ScriptedConf = Configurations.config("scripted-sbt") hide val ScriptedLaunchConf = Configurations.config("scripted-sbt-launch") hide From 08eaba9107bdeb47a4273fef882702d1257de3ac Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 13 Jan 2018 14:28:06 -0500 Subject: [PATCH 2/6] Add SbtPlugin Fixes #3538 This brings in `sbt.ScriptedPlugin` as `sbt.plugins.ScriptedPlugin` into sbt mothership. In addition, `sbt.plugins.SbtPlugin` is added that enables the scripted plugin and `sbtPlugin := true`. This allows plugin authors to bring in scripted plugin by writing: ```scala lazy val root = (project in file(".")) .enablePlugins(SbtPlugin) ``` --- build.sbt | 11 +++++++++-- .../scala/sbt/internal/PluginDiscovery.scala | 2 ++ .../main/scala/sbt/plugins/SbtPlugin.scala | 19 +++++++++++++++++++ .../scala/sbt/plugins}/ScriptedPlugin.scala | 14 +++++++++++--- .../project/scripted-plugin/build.sbt | 2 ++ 5 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 main/src/main/scala/sbt/plugins/SbtPlugin.scala rename {scripted/plugin/src/main/scala/sbt => main/src/main/scala/sbt/plugins}/ScriptedPlugin.scala (96%) create mode 100644 sbt/src/sbt-test/project/scripted-plugin/build.sbt diff --git a/build.sbt b/build.sbt index b9d11c0d6..4473012ac 100644 --- a/build.sbt +++ b/build.sbt @@ -272,11 +272,18 @@ lazy val scriptedSbtProj = (project in scriptedPath / "sbt") .configure(addSbtIO, addSbtUtilLogging, addSbtCompilerInterface, addSbtUtilScripted, addSbtLmCore) lazy val scriptedPluginProj = (project in scriptedPath / "plugin") - .dependsOn(sbtProj) + .dependsOn(mainProj) .settings( baseSettings, name := "Scripted Plugin", mimaSettings, + mimaBinaryIssueFilters ++= Seq( + // scripted plugin has moved into sbt mothership as sbt.plugins.ScriptedPlugin. + // sbt.ScriptedPlugin is still here for bincomat. + exclude[DirectMissingMethodProblem]("sbt.ScriptedPlugin#autoImport*"), + exclude[IncompatibleResultTypeProblem]("sbt.ScriptedPlugin.requires"), + exclude[DirectMissingMethodProblem]("sbt.ScriptedPlugin.scriptedParser"), + ), ) .configure(addSbtCompilerClasspath) @@ -417,7 +424,7 @@ lazy val mainSettingsProj = (project in file("main-settings")) // The main integration project for sbt. It brings all of the projects together, configures them, and provides for overriding conventions. lazy val mainProj = (project in file("main")) .enablePlugins(ContrabandPlugin) - .dependsOn(logicProj, actionsProj, mainSettingsProj, runProj, commandProj, collectionProj) + .dependsOn(logicProj, actionsProj, mainSettingsProj, runProj, commandProj, collectionProj, scriptedSbtProj) .settings( testedBaseSettings, name := "Main", diff --git a/main/src/main/scala/sbt/internal/PluginDiscovery.scala b/main/src/main/scala/sbt/internal/PluginDiscovery.scala index af2097298..50e60663b 100644 --- a/main/src/main/scala/sbt/internal/PluginDiscovery.scala +++ b/main/src/main/scala/sbt/internal/PluginDiscovery.scala @@ -47,6 +47,8 @@ object PluginDiscovery { "sbt.plugins.IvyPlugin" -> sbt.plugins.IvyPlugin, "sbt.plugins.JvmPlugin" -> sbt.plugins.JvmPlugin, "sbt.plugins.CorePlugin" -> sbt.plugins.CorePlugin, + "sbt.plugins.ScriptedPlugin" -> sbt.plugins.ScriptedPlugin, + "sbt.plugins.SbtPlugin" -> sbt.plugins.SbtPlugin, "sbt.plugins.JUnitXmlReportPlugin" -> sbt.plugins.JUnitXmlReportPlugin, "sbt.plugins.Giter8TemplatePlugin" -> sbt.plugins.Giter8TemplatePlugin ) diff --git a/main/src/main/scala/sbt/plugins/SbtPlugin.scala b/main/src/main/scala/sbt/plugins/SbtPlugin.scala new file mode 100644 index 000000000..a8a52413c --- /dev/null +++ b/main/src/main/scala/sbt/plugins/SbtPlugin.scala @@ -0,0 +1,19 @@ +/* + * sbt + * Copyright 2011 - 2017, Lightbend, Inc. + * Copyright 2008 - 2010, Mark Harrah + * Licensed under BSD-3-Clause license (see LICENSE) + */ + +package sbt +package plugins + +import Keys._ + +object SbtPlugin extends AutoPlugin { + override def requires = ScriptedPlugin + + override lazy val projectSettings = Seq( + sbtPlugin := true + ) +} diff --git a/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala b/main/src/main/scala/sbt/plugins/ScriptedPlugin.scala similarity index 96% rename from scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala rename to main/src/main/scala/sbt/plugins/ScriptedPlugin.scala index 9ba17d09c..cf5355ec7 100644 --- a/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala +++ b/main/src/main/scala/sbt/plugins/ScriptedPlugin.scala @@ -6,13 +6,21 @@ */ package sbt +package plugins +import java.io.File import Def.Initialize import Keys._ import sbt.internal.util.complete.{ Parser, DefaultParsers } import sbt.internal.inc.classpath.ClasspathUtilities import sbt.internal.inc.ModuleUtilities import java.lang.reflect.Method +import sbt.librarymanagement._ +import sbt.librarymanagement.syntax._ +import sbt.io._ +import sbt.io.syntax._ +import Project._ +import Def._ object ScriptedPlugin extends AutoPlugin { override def requires = plugins.JvmPlugin @@ -38,6 +46,7 @@ object ScriptedPlugin extends AutoPlugin { val scriptedDependencies = TaskKey[Unit]("scripted-dependencies") val scripted = InputKey[Unit]("scripted") } + import autoImport._ override lazy val projectSettings = Seq( ivyConfigurations ++= Seq(ScriptedConf, ScriptedLaunchConf), @@ -66,7 +75,7 @@ object ScriptedPlugin extends AutoPlugin { scriptedRun := scriptedRunTask.value, scriptedDependencies := { def use[A](@deprecated("unused", "") x: A*): Unit = () // avoid unused warnings - val analysis = (compile in Test).value + val analysis = (Keys.compile in Test).value val pub = (publishLocal).value use(analysis, pub) }, @@ -143,7 +152,6 @@ object ScriptedPlugin extends AutoPlugin { //(token(Space) ~> matched(testID)).* (token(Space) ~> (PagedIds | testIdAsGroup)).* map (_.flatten) } - def scriptedTask: Initialize[InputTask[Unit]] = Def.inputTask { val args = scriptedParser(sbtTestDirectory.value).parsed scriptedDependencies.value @@ -164,6 +172,6 @@ object ScriptedPlugin extends AutoPlugin { } private[this] def getJars(config: Configuration): Initialize[Task[PathFinder]] = Def.task { - PathFinder(Classpaths.managedJars(config, classpathTypes.value, update.value).map(_.data)) + PathFinder(Classpaths.managedJars(config, classpathTypes.value, Keys.update.value).map(_.data)) } } diff --git a/sbt/src/sbt-test/project/scripted-plugin/build.sbt b/sbt/src/sbt-test/project/scripted-plugin/build.sbt new file mode 100644 index 000000000..6c91c26b3 --- /dev/null +++ b/sbt/src/sbt-test/project/scripted-plugin/build.sbt @@ -0,0 +1,2 @@ +lazy val root = (project in file(".")) + .enablePlugins(SbtPlugin) From b05802f63b67bc9df04ab48046973b3771980a16 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 13 Jan 2018 02:47:53 -0500 Subject: [PATCH 3/6] move some scripted defaults settings to global Fixes #3656 --- .../main/scala/sbt/plugins/ScriptedPlugin.scala | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/main/src/main/scala/sbt/plugins/ScriptedPlugin.scala b/main/src/main/scala/sbt/plugins/ScriptedPlugin.scala index cf5355ec7..97f332986 100644 --- a/main/src/main/scala/sbt/plugins/ScriptedPlugin.scala +++ b/main/src/main/scala/sbt/plugins/ScriptedPlugin.scala @@ -48,6 +48,12 @@ object ScriptedPlugin extends AutoPlugin { } import autoImport._ + + override lazy val globalSettings = Seq( + scriptedBufferLog := true, + scriptedLaunchOpts := Seq(), + ) + override lazy val projectSettings = Seq( ivyConfigurations ++= Seq(ScriptedConf, ScriptedLaunchConf), scriptedSbt := (sbtVersion in pluginCrossBuild).value, @@ -67,7 +73,6 @@ object ScriptedPlugin extends AutoPlugin { case Some((x, y)) => sys error s"Unknown sbt version ${scriptedSbt.value} ($x.$y)" case None => sys error s"Unknown sbt version ${scriptedSbt.value}" }), - scriptedBufferLog := true, scriptedClasspath := getJars(ScriptedConf).value, scriptedTests := scriptedTestsTask.value, scriptedParallelInstances := 1, @@ -79,17 +84,16 @@ object ScriptedPlugin extends AutoPlugin { val pub = (publishLocal).value use(analysis, pub) }, - scriptedLaunchOpts := Seq(), scripted := scriptedTask.evaluated ) - def scriptedTestsTask: Initialize[Task[AnyRef]] = + private[sbt] def scriptedTestsTask: Initialize[Task[AnyRef]] = Def.task { val loader = ClasspathUtilities.toLoader(scriptedClasspath.value, scalaInstance.value.loader) ModuleUtilities.getObject("sbt.test.ScriptedTests", loader) } - def scriptedRunTask: Initialize[Task[Method]] = Def.taskDyn { + private[sbt] def scriptedRunTask: Initialize[Task[Method]] = Def.taskDyn { val fCls = classOf[File] val bCls = classOf[Boolean] val asCls = classOf[Array[String]] @@ -107,7 +111,7 @@ object ScriptedPlugin extends AutoPlugin { } import DefaultParsers._ - case class ScriptedTestPage(page: Int, total: Int) + private[sbt] case class ScriptedTestPage(page: Int, total: Int) private[sbt] def scriptedParser(scriptedBase: File): Parser[Seq[String]] = { @@ -152,7 +156,8 @@ object ScriptedPlugin extends AutoPlugin { //(token(Space) ~> matched(testID)).* (token(Space) ~> (PagedIds | testIdAsGroup)).* map (_.flatten) } - def scriptedTask: Initialize[InputTask[Unit]] = Def.inputTask { + + private[sbt] def scriptedTask: Initialize[InputTask[Unit]] = Def.inputTask { val args = scriptedParser(sbtTestDirectory.value).parsed scriptedDependencies.value try { From c20029ce160cab04e8fea1adba4fd0e321131204 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 13 Jan 2018 17:08:48 -0500 Subject: [PATCH 4/6] Work around package name confusion This works around the name conflict between sbt.test package and sbt.Keys.test. 1. sbt.test package is renamed to sbt.scriptedtest. This allows 1.0 plugins and builds to use `test` to mean `Keys.test`. 2. To keep binary compatibility for sbt 0.13 scripted, I am adding `sbt.test.ScriptedRunner` and `sbt.test.ScriptedTests` in `scripted-plugin` artifact. 3. Another affected user is Giter8 plugin that uses ScriptedPlugin. Since the intereactions are limited to `sbt.ScriptedPlugin.*`, we should be fine here. - https://github.com/foundweekends/giter8/blob/v0.11.0-M2/plugin/src/main/scala-sbt-1.0/giter8/SBTCompat.scala --- build.sbt | 11 ++++--- .../sbt/{plugins => }/ScriptedPlugin.scala | 8 +++-- .../scala/sbt/internal/PluginDiscovery.scala | 2 +- project/Scripted.scala | 2 +- .../src/main/resources/sbt/sbt.autoplugins | 1 - .../src/main/scala/sbt/ScriptedPlugin.scala | 10 ++++++ .../main/scala/sbt/test/ScriptedTests.scala | 32 +++++++++++++++++++ .../BatchScriptRunner.scala | 4 +-- .../{test => scriptedtest}/SbtHandler.scala | 2 +- .../ScriptedTests.scala | 10 +++--- 10 files changed, 64 insertions(+), 18 deletions(-) rename main/src/main/scala/sbt/{plugins => }/ScriptedPlugin.scala (96%) delete mode 100644 scripted/plugin/src/main/resources/sbt/sbt.autoplugins create mode 100644 scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala create mode 100644 scripted/plugin/src/main/scala/sbt/test/ScriptedTests.scala rename scripted/sbt/src/main/scala/sbt/{test => scriptedtest}/BatchScriptRunner.scala (96%) rename scripted/sbt/src/main/scala/sbt/{test => scriptedtest}/SbtHandler.scala (99%) rename scripted/sbt/src/main/scala/sbt/{test => scriptedtest}/ScriptedTests.scala (98%) diff --git a/build.sbt b/build.sbt index 4473012ac..092830ad7 100644 --- a/build.sbt +++ b/build.sbt @@ -268,6 +268,10 @@ lazy val scriptedSbtProj = (project in scriptedPath / "sbt") name := "Scripted sbt", libraryDependencies ++= Seq(launcherInterface % "provided"), mimaSettings, + mimaBinaryIssueFilters ++= Seq( + // sbt.test package is renamed to sbt.scriptedtest. + exclude[MissingClassProblem]("sbt.test.*"), + ), ) .configure(addSbtIO, addSbtUtilLogging, addSbtCompilerInterface, addSbtUtilScripted, addSbtLmCore) @@ -278,11 +282,8 @@ lazy val scriptedPluginProj = (project in scriptedPath / "plugin") name := "Scripted Plugin", mimaSettings, mimaBinaryIssueFilters ++= Seq( - // scripted plugin has moved into sbt mothership as sbt.plugins.ScriptedPlugin. - // sbt.ScriptedPlugin is still here for bincomat. - exclude[DirectMissingMethodProblem]("sbt.ScriptedPlugin#autoImport*"), - exclude[IncompatibleResultTypeProblem]("sbt.ScriptedPlugin.requires"), - exclude[DirectMissingMethodProblem]("sbt.ScriptedPlugin.scriptedParser"), + // scripted plugin has moved into sbt mothership. + exclude[MissingClassProblem]("sbt.ScriptedPlugin*") ), ) .configure(addSbtCompilerClasspath) diff --git a/main/src/main/scala/sbt/plugins/ScriptedPlugin.scala b/main/src/main/scala/sbt/ScriptedPlugin.scala similarity index 96% rename from main/src/main/scala/sbt/plugins/ScriptedPlugin.scala rename to main/src/main/scala/sbt/ScriptedPlugin.scala index 97f332986..538a851ef 100644 --- a/main/src/main/scala/sbt/plugins/ScriptedPlugin.scala +++ b/main/src/main/scala/sbt/ScriptedPlugin.scala @@ -6,7 +6,6 @@ */ package sbt -package plugins import java.io.File import Def.Initialize @@ -90,7 +89,12 @@ object ScriptedPlugin extends AutoPlugin { private[sbt] def scriptedTestsTask: Initialize[Task[AnyRef]] = Def.task { val loader = ClasspathUtilities.toLoader(scriptedClasspath.value, scalaInstance.value.loader) - ModuleUtilities.getObject("sbt.test.ScriptedTests", loader) + try { + ModuleUtilities.getObject("sbt.scriptedtest.ScriptedTests", loader) + } catch { + case _: ClassNotFoundException => + ModuleUtilities.getObject("sbt.test.ScriptedTests", loader) + } } private[sbt] def scriptedRunTask: Initialize[Task[Method]] = Def.taskDyn { diff --git a/main/src/main/scala/sbt/internal/PluginDiscovery.scala b/main/src/main/scala/sbt/internal/PluginDiscovery.scala index 50e60663b..cc99453e3 100644 --- a/main/src/main/scala/sbt/internal/PluginDiscovery.scala +++ b/main/src/main/scala/sbt/internal/PluginDiscovery.scala @@ -47,7 +47,7 @@ object PluginDiscovery { "sbt.plugins.IvyPlugin" -> sbt.plugins.IvyPlugin, "sbt.plugins.JvmPlugin" -> sbt.plugins.JvmPlugin, "sbt.plugins.CorePlugin" -> sbt.plugins.CorePlugin, - "sbt.plugins.ScriptedPlugin" -> sbt.plugins.ScriptedPlugin, + "sbt.ScriptedPlugin" -> sbt.ScriptedPlugin, "sbt.plugins.SbtPlugin" -> sbt.plugins.SbtPlugin, "sbt.plugins.JUnitXmlReportPlugin" -> sbt.plugins.JUnitXmlReportPlugin, "sbt.plugins.Giter8TemplatePlugin" -> sbt.plugins.Giter8TemplatePlugin diff --git a/project/Scripted.scala b/project/Scripted.scala index 788f1d60e..0723d4d84 100644 --- a/project/Scripted.scala +++ b/project/Scripted.scala @@ -115,7 +115,7 @@ object Scripted { sys.props(org.apache.logging.log4j.util.LoaderUtil.IGNORE_TCCL_PROPERTY) = "true" val noJLine = new classpath.FilteredLoader(scriptedSbtInstance.loader, "jline." :: Nil) val loader = classpath.ClasspathUtilities.toLoader(scriptedSbtClasspath.files, noJLine) - val bridgeClass = Class.forName("sbt.test.ScriptedRunner", true, loader) + val bridgeClass = Class.forName("sbt.scriptedtest.ScriptedRunner", true, loader) val bridge = bridgeClass.getDeclaredConstructor().newInstance().asInstanceOf[SbtScriptedRunner] try { // Using java.util.List to encode File => Unit. diff --git a/scripted/plugin/src/main/resources/sbt/sbt.autoplugins b/scripted/plugin/src/main/resources/sbt/sbt.autoplugins deleted file mode 100644 index 0077b7635..000000000 --- a/scripted/plugin/src/main/resources/sbt/sbt.autoplugins +++ /dev/null @@ -1 +0,0 @@ -sbt.ScriptedPlugin \ No newline at end of file diff --git a/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala b/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala new file mode 100644 index 000000000..93c2d93f4 --- /dev/null +++ b/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala @@ -0,0 +1,10 @@ +/* + * sbt + * Copyright 2011 - 2017, Lightbend, Inc. + * Copyright 2008 - 2010, Mark Harrah + * Licensed under BSD-3-Clause license (see LICENSE) + */ + +package sbt + +// ScriptedPlugin has moved to main. diff --git a/scripted/plugin/src/main/scala/sbt/test/ScriptedTests.scala b/scripted/plugin/src/main/scala/sbt/test/ScriptedTests.scala new file mode 100644 index 000000000..727c4bd6c --- /dev/null +++ b/scripted/plugin/src/main/scala/sbt/test/ScriptedTests.scala @@ -0,0 +1,32 @@ +/* + * sbt + * Copyright 2011 - 2017, Lightbend, Inc. + * Copyright 2008 - 2010, Mark Harrah + * Licensed under BSD-3-Clause license (see LICENSE) + */ + +package sbt.test + +import java.io.File + +/** + * This is a bincompat place holder sbt.test package that we are now trying to hide + * because of the name conflict with Keys.test. + */ +@deprecated("Use sbt.scriptedtest.ScriptedRunner.", "1.2.0") +private[sbt] class ScriptedRunner extends sbt.scriptedtest.ScriptedRunner + +/** + * This is a bincompat place holder for sbt.test package that we are now trying to hide + * because of the name conflict with Keys.test. + */ +@deprecated("Use sbt.scriptedtest.ScriptedTests.", "1.2.0") +private[sbt] object ScriptedTests extends ScriptedRunner { + + /** Represents the function that runs the scripted tests, both in single or batch mode. */ + type TestRunner = () => Seq[Option[String]] + + val emptyCallback: File => Unit = _ => () + def main(args: Array[String]): Unit = + sbt.scriptedtest.ScriptedTests.main(args) +} diff --git a/scripted/sbt/src/main/scala/sbt/test/BatchScriptRunner.scala b/scripted/sbt/src/main/scala/sbt/scriptedtest/BatchScriptRunner.scala similarity index 96% rename from scripted/sbt/src/main/scala/sbt/test/BatchScriptRunner.scala rename to scripted/sbt/src/main/scala/sbt/scriptedtest/BatchScriptRunner.scala index ccf9d5148..fe9d35712 100644 --- a/scripted/sbt/src/main/scala/sbt/test/BatchScriptRunner.scala +++ b/scripted/sbt/src/main/scala/sbt/scriptedtest/BatchScriptRunner.scala @@ -6,10 +6,10 @@ */ package sbt -package test +package scriptedtest import sbt.internal.scripted._ -import sbt.test.BatchScriptRunner.States +import sbt.scriptedtest.BatchScriptRunner.States /** Defines an alternative script runner that allows batch execution. */ private[sbt] class BatchScriptRunner extends ScriptRunner { diff --git a/scripted/sbt/src/main/scala/sbt/test/SbtHandler.scala b/scripted/sbt/src/main/scala/sbt/scriptedtest/SbtHandler.scala similarity index 99% rename from scripted/sbt/src/main/scala/sbt/test/SbtHandler.scala rename to scripted/sbt/src/main/scala/sbt/scriptedtest/SbtHandler.scala index 12598df78..3ddecbab8 100644 --- a/scripted/sbt/src/main/scala/sbt/test/SbtHandler.scala +++ b/scripted/sbt/src/main/scala/sbt/scriptedtest/SbtHandler.scala @@ -6,7 +6,7 @@ */ package sbt -package test +package scriptedtest import java.io.{ File, IOException } import xsbt.IPC diff --git a/scripted/sbt/src/main/scala/sbt/test/ScriptedTests.scala b/scripted/sbt/src/main/scala/sbt/scriptedtest/ScriptedTests.scala similarity index 98% rename from scripted/sbt/src/main/scala/sbt/test/ScriptedTests.scala rename to scripted/sbt/src/main/scala/sbt/scriptedtest/ScriptedTests.scala index f516d0beb..4d552994c 100644 --- a/scripted/sbt/src/main/scala/sbt/test/ScriptedTests.scala +++ b/scripted/sbt/src/main/scala/sbt/scriptedtest/ScriptedTests.scala @@ -6,7 +6,7 @@ */ package sbt -package test +package scriptedtest import java.io.File import java.util.Properties @@ -466,13 +466,13 @@ class ScriptedRunner { final case class ScriptedTest(group: String, name: String) { override def toString = group + "/" + name } -private[test] object ListTests { +private[sbt] object ListTests { def list(directory: File, filter: java.io.FileFilter) = wrapNull(directory.listFiles(filter)) } import ListTests._ -private[test] final class ListTests(baseDirectory: File, - accept: ScriptedTest => Boolean, - log: Logger) { +private[sbt] final class ListTests(baseDirectory: File, + accept: ScriptedTest => Boolean, + log: Logger) { def filter = DirectoryFilter -- HiddenFileFilter def listTests: Seq[ScriptedTest] = { list(baseDirectory, filter) flatMap { group => From 0d83b2fc3f38ccc3e4071a132aa27d8fbecf0418 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Wed, 17 Jan 2018 14:58:46 -0500 Subject: [PATCH 5/6] notes --- notes/1.2.0/scripted-change.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 notes/1.2.0/scripted-change.md diff --git a/notes/1.2.0/scripted-change.md b/notes/1.2.0/scripted-change.md new file mode 100644 index 000000000..63715ecab --- /dev/null +++ b/notes/1.2.0/scripted-change.md @@ -0,0 +1,27 @@ + +### Fixes with compatibility implications + +- In sbt 1.2, `ScriptedPlugin` is no longer triggered automatically. This allows easier use of the plugin in a multi-project build. We recommend migration to `SbtPlugin`. [#3514][3514]/[#3875][3875] by [@eed3si9n][@eed3si9n] +- `scriptedBufferLog` and `scriptedLaunchOpts` settings are changed so they are scoped globally. + +### Features + +- Adds `SbtPlugin`. See below. + +### Bug fixes + + +### SbtPlugin + +`SbtPlugin` is a new plugin that represents sbt plugin projects. + + lazy val fooPlugin = (project in file("plugin")) + .enablePlugins(SbtPlugin) + +This sets `sbtPlugin` setting to `true`, and brings in the new non-triggered `ScriptedPlugin`. + +[#3875][3875] by [@eed3si9n][@eed3si9n] + + [@eed3si9n]: https://github.com/eed3si9n + [3514]: https://github.com/sbt/sbt/issues/3514 + [3875]: https://github.com/sbt/sbt/pull/3875 From 58ee24b427dea3b53429d4c19f3cc377a2e04915 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 22 Jan 2018 13:45:58 -0500 Subject: [PATCH 6/6] Migrate to the new way of enabling scripted --- sbt/src/sbt-test/project/scripted-skip-incompatible/build.sbt | 2 ++ .../project/scripted-skip-incompatible/project/plugins.sbt | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) create mode 100644 sbt/src/sbt-test/project/scripted-skip-incompatible/build.sbt delete mode 100644 sbt/src/sbt-test/project/scripted-skip-incompatible/project/plugins.sbt diff --git a/sbt/src/sbt-test/project/scripted-skip-incompatible/build.sbt b/sbt/src/sbt-test/project/scripted-skip-incompatible/build.sbt new file mode 100644 index 000000000..6c91c26b3 --- /dev/null +++ b/sbt/src/sbt-test/project/scripted-skip-incompatible/build.sbt @@ -0,0 +1,2 @@ +lazy val root = (project in file(".")) + .enablePlugins(SbtPlugin) diff --git a/sbt/src/sbt-test/project/scripted-skip-incompatible/project/plugins.sbt b/sbt/src/sbt-test/project/scripted-skip-incompatible/project/plugins.sbt deleted file mode 100644 index 529e7d656..000000000 --- a/sbt/src/sbt-test/project/scripted-skip-incompatible/project/plugins.sbt +++ /dev/null @@ -1,3 +0,0 @@ -libraryDependencies += { - "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value -}