diff --git a/project/build.properties b/project/build.properties index ea56294fa..48c7f1db5 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1,5 +1,6 @@ -project.organization=org.scala-tools.sbt project.name=Simple Build Tool -sbt.version=0.5.6 -project.version=0.7.0-SNAPSHOT -scala.version=2.7.7 +project.organization=org.scala-tools.sbt +project.version=0.7.0 +sbt.version=0.6.13 +def.scala.version=2.7.7 +build.scala.versions=2.7.7 diff --git a/project/build/SbtProject.scala b/project/build/SbtProject.scala index 184ffb795..2487b5a3f 100644 --- a/project/build/SbtProject.scala +++ b/project/build/SbtProject.scala @@ -6,7 +6,7 @@ import sbt._ import java.io.File import java.net.URL -class SbtProject(info: ProjectInfo) extends DefaultProject(info) with test.SbtScripted +class SbtProject(info: ProjectInfo) extends DefaultProject(info) //with test.SbtScripted with posterous.Publish { /* Additional resources to include in the produced jar.*/ def extraResources = descendents(info.projectPath / "licenses", "*") +++ "LICENSE" +++ "NOTICE" @@ -23,10 +23,10 @@ class SbtProject(info: ProjectInfo) extends DefaultProject(info) with test.SbtSc /** configuration of scripted testing **/ // Set to false to show logging as it happens without buffering, true to buffer until it completes and only show if the task fails. - // The output of scripted tasks executed in parallel will be inteleaved if true. - override def scriptedBufferLog = true + // The output of scripted tasks executed in parallel will be inteleaved if false. + //override def scriptedBufferLog = true // Configure which versions of Scala to test against for those tests that do cross building - override def scriptedCompatibility = sbt.test.CompatibilityLevel.Full + //override def scriptedCompatibility = sbt.test.CompatibilityLevel.Minimal override def useDefaultConfigurations = false val default = Configurations.Default @@ -34,8 +34,6 @@ class SbtProject(info: ProjectInfo) extends DefaultProject(info) with test.SbtSc val provided = Configurations.Provided val testConf = Configurations.Test - override def crossScalaVersions = Set("2.7.7") - //testing val scalacheck = "org.scala-tools.testing" %% "scalacheck" % "1.6" % "test" diff --git a/project/plugins/Plugins.scala b/project/plugins/Plugins.scala index 3f7281ee0..5d67a4b0d 100644 --- a/project/plugins/Plugins.scala +++ b/project/plugins/Plugins.scala @@ -4,6 +4,7 @@ import java.net.URL class Plugins(info: ProjectInfo) extends PluginDefinition(info) { - val scripted = "org.scala-tools.sbt" % "scripted" % "0.6.13" +// val scripted = "org.scala-tools.sbt" % "scripted" % "0.7.0-SNAPSHOT" +// val posterous = "net.databinder" % "posterous-sbt" % "0.1.0-SNAPSHOT" val technically = Resolver.url("technically.us", new URL("http://databinder.net/repo/"))(Resolver.ivyStylePatterns) } diff --git a/scripted/project/build.properties b/scripted/project/build.properties index 5919d5e18..d2c0f2559 100644 --- a/scripted/project/build.properties +++ b/scripted/project/build.properties @@ -1,6 +1,7 @@ -project.organization=org.scala-tools.sbt project.name=scripted -sbt.version=0.5.6 -project.version=0.6.13 -scala.version=2.7.7 +project.organization=org.scala-tools.sbt +project.version=0.7.0 +sbt.version=0.7.0 +def.scala.version=2.7.7 +build.scala.versions=2.7.7 project.initialize=false diff --git a/scripted/project/build/SbtTest.scala b/scripted/project/build/SbtTest.scala index fac2d03c9..091847a8e 100644 --- a/scripted/project/build/SbtTest.scala +++ b/scripted/project/build/SbtTest.scala @@ -7,6 +7,7 @@ import sbt._ class SbtTest(info: ProjectInfo) extends PluginProject(info) { val xsbtTest = "org.scala-tools.sbt" %% "test" % version.toString + val interface = "org.scala-tools.sbt" % "launcher-interface" % version.toString % "provided" override def mainResources = super.mainResources +++ "LICENSE" +++ "NOTICE" diff --git a/scripted/src/main/scala/SbtHandler.scala b/scripted/src/main/scala/SbtHandler.scala index e024a76f0..acd98c122 100644 --- a/scripted/src/main/scala/SbtHandler.scala +++ b/scripted/src/main/scala/SbtHandler.scala @@ -32,7 +32,9 @@ final class SbtHandler(directory: File, log: Logger, server: IPC.Server) extends } def newRemote = { - val builder = new java.lang.ProcessBuilder("xsbt", "<" + server.port).directory(directory) + val launcherJar = FileUtilities.classLocationFile(Class.forName("xsbti.AppProvider")).getAbsolutePath + val args = "java" :: "-jar" :: launcherJar :: ( "<" + server.port) :: Nil + val builder = new java.lang.ProcessBuilder(args.toArray : _*).directory(directory) val io = BasicIO(log, false).withInput(_.close()) val p = Process(builder) run( io ) Spawn { p.exitValue(); server.close() } @@ -40,9 +42,8 @@ final class SbtHandler(directory: File, log: Logger, server: IPC.Server) extends catch { case e: java.net.SocketException => error("Remote sbt initialization failed") } p } + import java.util.regex.Pattern.{quote => q} // if the argument contains spaces, enclose it in quotes, quoting backslashes and quotes def escape(argument: String) = if(argument.contains(" ")) "\"" + argument.replaceAll(q("""\"""), """\\""").replaceAll(q("\""), "\\\"") + "\"" else argument - def q(s: String) = java.util.regex.Pattern.quote(s) -// Process("java" :: "-classpath" :: classpath.map(_.getAbsolutePath).mkString(File.pathSeparator) :: "xsbt.boot.Boot" :: ( "<" + server.port) :: Nil) run log } diff --git a/scripted/src/main/scala/Scripted.scala b/scripted/src/main/scala/Scripted.scala index f46ee4d42..3b5962cda 100644 --- a/scripted/src/main/scala/Scripted.scala +++ b/scripted/src/main/scala/Scripted.scala @@ -29,13 +29,13 @@ final case class ScriptedTest(group: String, name: String) extends NotNull trait Scripted extends Project with MultiTaskProject { def scriptedCompatibility = CompatibilityLevel.Minimal - def scriptedDefScala = scalaVersion.value.toString + def scriptedDefScala = buildScalaVersion def scriptedSbt = projectVersion.value.toString def scriptedBufferLog = true def sbtTests: Path def scriptedTask(dependencies: ManagedTask*) = dynamic(scriptedTests(listTests)) dependsOn(dependencies : _*) - def scriptedMethodTask(dependencies: ManagedTask*) = multiTask(listTests.map(_.toString).toList) { includeFunction => + def scriptedMethodTask(dependencies: ManagedTask*) = multiTask(listTests.map(_.toString).toList) { (args, includeFunction) => scriptedTests(listTests.filter(test => includeFunction(test.toString)), dependencies : _*) } def listTests = (new ListTests(sbtTests.asFile, include _, log)).listTests