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 =>