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 scriptedClasspath = TaskKey[PathFinder]("scripted-classpath")
|
||||||
val scriptedTests = TaskKey[AnyRef]("scripted-tests")
|
val scriptedTests = TaskKey[AnyRef]("scripted-tests")
|
||||||
val scriptedRun = TaskKey[Method]("scripted-run")
|
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 scriptedDependencies = TaskKey[Unit]("scripted-dependencies")
|
||||||
val scripted = InputKey[Unit]("scripted")
|
val scripted = InputKey[Unit]("scripted")
|
||||||
|
|
||||||
|
|
@ -33,13 +34,13 @@ object ScriptedPlugin extends Plugin {
|
||||||
|
|
||||||
def scriptedRunTask: Initialize[Task[Method]] = (scriptedTests) map {
|
def scriptedRunTask: Initialize[Task[Method]] = (scriptedTests) map {
|
||||||
(m) =>
|
(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 =>
|
def scriptedTask: Initialize[InputTask[Unit]] = InputTask(_ => complete.Parsers.spaceDelimited("<arg>")) { result =>
|
||||||
(scriptedDependencies, scriptedTests, scriptedRun, sbtTestDirectory, scriptedBufferLog, scriptedSbt, scriptedScalas, sbtLauncher, result) map {
|
(scriptedDependencies, scriptedTests, scriptedRun, sbtTestDirectory, scriptedBufferLog, scriptedSbt, scriptedScalas, sbtLauncher, scriptedLaunchOpts, result) map {
|
||||||
(deps, m, r, testdir, bufferlog, version, scriptedScalas, launcher, args) =>
|
(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) }
|
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 }
|
catch { case e: java.lang.reflect.InvocationTargetException => throw e.getCause }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -56,6 +57,7 @@ object ScriptedPlugin extends Plugin {
|
||||||
scriptedTests <<= scriptedTestsTask,
|
scriptedTests <<= scriptedTestsTask,
|
||||||
scriptedRun <<= scriptedRunTask,
|
scriptedRun <<= scriptedRunTask,
|
||||||
scriptedDependencies <<= (compile in Test, publishLocal) map { (analysis, pub) => Unit },
|
scriptedDependencies <<= (compile in Test, publishLocal) map { (analysis, pub) => Unit },
|
||||||
|
scriptedLaunchOpts := Seq(),
|
||||||
scripted <<= scriptedTask
|
scripted <<= scriptedTask
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,9 @@ package test
|
||||||
|
|
||||||
import Logger._
|
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
|
type State = Process
|
||||||
def initialState = newRemote
|
def initialState = newRemote
|
||||||
def apply(command: String, arguments: List[String], p: Process): Process =
|
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 launcherJar = launcher.getAbsolutePath
|
||||||
val globalBase = "-Dsbt.global.base=" + (new File(directory, "global")).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 io = BasicIO(log, false).withInput(_.close())
|
||||||
val p = Process(args, directory) run( io )
|
val p = Process(args, directory) run( io )
|
||||||
Spawn { p.exitValue(); server.close() }
|
Spawn { p.exitValue(); server.close() }
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import xsbt.IPC
|
||||||
import xsbt.test.{CommentHandler, FileCommands, ScriptRunner, TestScriptParser}
|
import xsbt.test.{CommentHandler, FileCommands, ScriptRunner, TestScriptParser}
|
||||||
import IO.wrapNull
|
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)
|
private val testResources = new Resources(resourceBaseDirectory)
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@ final class ScriptedTests(resourceBaseDirectory: File, bufferLog: Boolean, sbtVe
|
||||||
def createParser() =
|
def createParser() =
|
||||||
{
|
{
|
||||||
val fileHandler = new FileCommands(testDirectory)
|
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))
|
new TestScriptParser(Map('$' -> fileHandler, '>' -> sbtHandler, '#' -> CommentHandler))
|
||||||
}
|
}
|
||||||
def runTest() =
|
def runTest() =
|
||||||
|
|
@ -92,14 +92,14 @@ object ScriptedTests
|
||||||
val bootProperties = new File(args(5))
|
val bootProperties = new File(args(5))
|
||||||
val tests = args.drop(6)
|
val tests = args.drop(6)
|
||||||
val logger = ConsoleLogger()
|
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 =
|
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)//new FullLogger(Logger.xlog2Log(log)))
|
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) )
|
for( ScriptedTest(group, name) <- get(tests, resourceBaseDirectory, logger) )
|
||||||
runner.scriptedTest(group, name, logger)
|
runner.scriptedTest(group, name, logger)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue