mirror of https://github.com/sbt/sbt.git
add setting to pass command line opts to scripted launcher
This commit is contained in:
parent
b5c4e5290e
commit
28674af0d2
|
|
@ -22,6 +22,7 @@ object ScriptedPlugin extends Plugin {
|
|||
val scriptedClasspath = TaskKey[PathFinder]("scripted-classpath")
|
||||
val scriptedTests = TaskKey[AnyRef]("scripted-tests")
|
||||
val scriptedRun = TaskKey[Method]("scripted-run")
|
||||
val scriptedLaunchOpts = SettingKey[Seq[String]]("scripted-launch-opts", "options to pass to jvm launching scripted tasks")
|
||||
val scriptedDependencies = TaskKey[Unit]("scripted-dependencies")
|
||||
val scripted = InputKey[Unit]("scripted")
|
||||
|
||||
|
|
@ -33,13 +34,13 @@ object ScriptedPlugin extends Plugin {
|
|||
|
||||
def scriptedRunTask: Initialize[Task[Method]] = (scriptedTests) map {
|
||||
(m) =>
|
||||
m.getClass.getMethod("run", classOf[File], classOf[Boolean], classOf[String], classOf[String], classOf[String], classOf[Array[String]], classOf[File])
|
||||
m.getClass.getMethod("run", classOf[File], classOf[Boolean], classOf[String], classOf[String], classOf[String], classOf[Array[String]], classOf[File], classOf[Seq[String]])
|
||||
}
|
||||
|
||||
def scriptedTask: Initialize[InputTask[Unit]] = InputTask(_ => complete.Parsers.spaceDelimited("<arg>")) { result =>
|
||||
(scriptedDependencies, scriptedTests, scriptedRun, sbtTestDirectory, scriptedBufferLog, scriptedSbt, scriptedScalas, sbtLauncher, result) map {
|
||||
(deps, m, r, testdir, bufferlog, version, scriptedScalas, launcher, args) =>
|
||||
try { r.invoke(m, testdir, bufferlog: java.lang.Boolean, version.toString, scriptedScalas.build, scriptedScalas.versions, args.toArray, launcher) }
|
||||
(scriptedDependencies, scriptedTests, scriptedRun, sbtTestDirectory, scriptedBufferLog, scriptedSbt, scriptedScalas, sbtLauncher, scriptedLaunchOpts, result) map {
|
||||
(deps, m, r, testdir, bufferlog, version, scriptedScalas, launcher, launchOpts, args) =>
|
||||
try { r.invoke(m, testdir, bufferlog: java.lang.Boolean, version.toString, scriptedScalas.build, scriptedScalas.versions, args.toArray, launcher, launchOpts) }
|
||||
catch { case e: java.lang.reflect.InvocationTargetException => throw e.getCause }
|
||||
}
|
||||
}
|
||||
|
|
@ -56,6 +57,7 @@ object ScriptedPlugin extends Plugin {
|
|||
scriptedTests <<= scriptedTestsTask,
|
||||
scriptedRun <<= scriptedRunTask,
|
||||
scriptedDependencies <<= (compile in Test, publishLocal) map { (analysis, pub) => Unit },
|
||||
scriptedLaunchOpts := Seq(),
|
||||
scripted <<= scriptedTask
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ package test
|
|||
|
||||
import Logger._
|
||||
|
||||
final class SbtHandler(directory: File, launcher: File, log: Logger, server: IPC.Server) extends StatementHandler
|
||||
final class SbtHandler(directory: File, launcher: File, log: Logger, server: IPC.Server, launchOpts: Seq[String] = Seq()) extends StatementHandler
|
||||
{
|
||||
def this(directory: File, launcher: File, log: xsbti.Logger, server: IPC.Server) = this(directory, launcher, log: Logger, server)
|
||||
def this(directory: File, launcher: File, log: xsbti.Logger, server: IPC.Server, launchOpts: Seq[String]) = this(directory, launcher, log: Logger, server, launchOpts)
|
||||
type State = Process
|
||||
def initialState = newRemote
|
||||
def apply(command: String, arguments: List[String], p: Process): Process =
|
||||
|
|
@ -38,7 +38,7 @@ final class SbtHandler(directory: File, launcher: File, log: Logger, server: IPC
|
|||
{
|
||||
val launcherJar = launcher.getAbsolutePath
|
||||
val globalBase = "-Dsbt.global.base=" + (new File(directory, "global")).getAbsolutePath
|
||||
val args = "java" :: globalBase :: "-jar" :: launcherJar :: ( "<" + server.port) :: Nil
|
||||
val args = "java" :: (launchOpts.toList ++ (globalBase :: "-jar" :: launcherJar :: ( "<" + server.port) :: Nil))
|
||||
val io = BasicIO(log, false).withInput(_.close())
|
||||
val p = Process(args, directory) run( io )
|
||||
Spawn { p.exitValue(); server.close() }
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import xsbt.IPC
|
|||
import xsbt.test.{CommentHandler, FileCommands, ScriptRunner, TestScriptParser}
|
||||
import IO.wrapNull
|
||||
|
||||
final class ScriptedTests(resourceBaseDirectory: File, bufferLog: Boolean, sbtVersion: String, defScalaVersion: String, buildScalaVersions: String, launcher: File)
|
||||
final class ScriptedTests(resourceBaseDirectory: File, bufferLog: Boolean, sbtVersion: String, defScalaVersion: String, buildScalaVersions: String, launcher: File, launchOpts: Seq[String])
|
||||
{
|
||||
private val testResources = new Resources(resourceBaseDirectory)
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ final class ScriptedTests(resourceBaseDirectory: File, bufferLog: Boolean, sbtVe
|
|||
def createParser() =
|
||||
{
|
||||
val fileHandler = new FileCommands(testDirectory)
|
||||
val sbtHandler = new SbtHandler(testDirectory, launcher, buffered, server)
|
||||
val sbtHandler = new SbtHandler(testDirectory, launcher, buffered, server, launchOpts)
|
||||
new TestScriptParser(Map('$' -> fileHandler, '>' -> sbtHandler, '#' -> CommentHandler))
|
||||
}
|
||||
def runTest() =
|
||||
|
|
@ -92,14 +92,14 @@ object ScriptedTests
|
|||
val bootProperties = new File(args(5))
|
||||
val tests = args.drop(6)
|
||||
val logger = ConsoleLogger()
|
||||
run(directory, buffer, sbtVersion, defScalaVersion, buildScalaVersions, tests, logger, bootProperties)
|
||||
run(directory, buffer, sbtVersion, defScalaVersion, buildScalaVersions, tests, logger, bootProperties, Seq())
|
||||
}
|
||||
def run(resourceBaseDirectory: File, bufferLog: Boolean, sbtVersion: String, defScalaVersion: String, buildScalaVersions: String, tests: Array[String], bootProperties: File): Unit =
|
||||
run(resourceBaseDirectory, bufferLog, sbtVersion, defScalaVersion, buildScalaVersions, tests, ConsoleLogger(), bootProperties)//new FullLogger(Logger.xlog2Log(log)))
|
||||
def run(resourceBaseDirectory: File, bufferLog: Boolean, sbtVersion: String, defScalaVersion: String, buildScalaVersions: String, tests: Array[String], bootProperties: File, launchOpts: Seq[String]): Unit =
|
||||
run(resourceBaseDirectory, bufferLog, sbtVersion, defScalaVersion, buildScalaVersions, tests, ConsoleLogger(), bootProperties, launchOpts)//new FullLogger(Logger.xlog2Log(log)))
|
||||
|
||||
def run(resourceBaseDirectory: File, bufferLog: Boolean, sbtVersion: String, defScalaVersion: String, buildScalaVersions: String, tests: Array[String], logger: AbstractLogger, bootProperties: File)
|
||||
def run(resourceBaseDirectory: File, bufferLog: Boolean, sbtVersion: String, defScalaVersion: String, buildScalaVersions: String, tests: Array[String], logger: AbstractLogger, bootProperties: File, launchOpts: Seq[String])
|
||||
{
|
||||
val runner = new ScriptedTests(resourceBaseDirectory, bufferLog, sbtVersion, defScalaVersion, buildScalaVersions, bootProperties)
|
||||
val runner = new ScriptedTests(resourceBaseDirectory, bufferLog, sbtVersion, defScalaVersion, buildScalaVersions, bootProperties, launchOpts)
|
||||
for( ScriptedTest(group, name) <- get(tests, resourceBaseDirectory, logger) )
|
||||
runner.scriptedTest(group, name, logger)
|
||||
}
|
||||
|
|
@ -171,4 +171,4 @@ object CompatibilityLevel extends Enumeration
|
|||
case Minimal27 => "2.7.7"
|
||||
case Minimal28 => "2.8.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue