mirror of https://github.com/sbt/sbt.git
Workaround for method not found for sbt 0.13 scripted tests
This commit is contained in:
parent
948361e429
commit
d3360d640d
|
|
@ -2,7 +2,7 @@
|
|||
import sbt._
|
||||
import sbt.Defaults.itSettings
|
||||
import sbt.Keys._
|
||||
import sbt.ScriptedPlugin.autoImport.{ScriptedConf, ScriptedLaunchConf, scriptedSbt}
|
||||
import sbt.ScriptedPlugin.autoImport._
|
||||
import sbt.ScriptedPlugin.{projectSettings => scriptedSettings}
|
||||
import sbt.librarymanagement.CrossVersion.partialVersion
|
||||
|
||||
|
|
@ -10,7 +10,72 @@ object Aliases {
|
|||
|
||||
def libs = libraryDependencies
|
||||
|
||||
def withScriptedTests =
|
||||
def withScriptedTests = {
|
||||
|
||||
// Both tweaked tasks adapted from the scripted sources.
|
||||
// No idea why this is required to run the scripted tests for sbt 0.13.
|
||||
|
||||
def tweakedScriptedRunTask = Def.task {
|
||||
// similar to https://github.com/sbt/sbt/issues/3245#issuecomment-306045952
|
||||
val cls = scriptedTests.value.getClass
|
||||
|
||||
if (sbtVersion.in(pluginCrossBuild).value.startsWith("0.13."))
|
||||
cls.getMethod("run",
|
||||
classOf[File],
|
||||
classOf[Boolean],
|
||||
classOf[Array[String]],
|
||||
classOf[File],
|
||||
classOf[Array[String]]
|
||||
)
|
||||
else
|
||||
cls.getMethod("run",
|
||||
classOf[File],
|
||||
classOf[Boolean],
|
||||
classOf[Array[String]],
|
||||
classOf[File],
|
||||
classOf[Array[String]],
|
||||
classOf[java.util.List[File]]
|
||||
)
|
||||
}
|
||||
|
||||
def tweakedScriptedTask = Def.inputTask {
|
||||
|
||||
val args = ScriptedPlugin
|
||||
.asInstanceOf[{
|
||||
def scriptedParser(f: File): complete.Parser[Seq[String]]
|
||||
}]
|
||||
.scriptedParser(sbtTestDirectory.value)
|
||||
.parsed
|
||||
|
||||
scriptedDependencies.value
|
||||
|
||||
try {
|
||||
if (sbtVersion.in(pluginCrossBuild).value.startsWith("0.13."))
|
||||
scriptedRun.value.invoke(
|
||||
scriptedTests.value,
|
||||
sbtTestDirectory.value,
|
||||
scriptedBufferLog.value: java.lang.Boolean,
|
||||
args.toArray,
|
||||
sbtLauncher.value,
|
||||
scriptedLaunchOpts.value.toArray
|
||||
)
|
||||
else
|
||||
scriptedRun.value.invoke(
|
||||
scriptedTests.value,
|
||||
sbtTestDirectory.value,
|
||||
scriptedBufferLog.value: java.lang.Boolean,
|
||||
args.toArray,
|
||||
sbtLauncher.value,
|
||||
scriptedLaunchOpts.value.toArray,
|
||||
new java.util.ArrayList()
|
||||
)
|
||||
} catch {
|
||||
case e: java.lang.reflect.InvocationTargetException =>
|
||||
throw e.getCause
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// see https://github.com/sbt/sbt/issues/3325#issuecomment-315670424
|
||||
scriptedSettings.filterNot(_.key.key.label == libraryDependencies.key.label) ++ Seq(
|
||||
libraryDependencies ++= {
|
||||
|
|
@ -33,8 +98,11 @@ object Aliases {
|
|||
case _ =>
|
||||
Seq()
|
||||
}
|
||||
}
|
||||
)
|
||||
},
|
||||
scriptedRun := tweakedScriptedRunTask.value,
|
||||
scripted := tweakedScriptedTask.evaluated
|
||||
)
|
||||
}
|
||||
|
||||
def hasITs = itSettings
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue