From f97b0b543540450f3cb2e2687c5fc8d027908093 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Mon, 10 Jun 2013 11:57:37 -0400 Subject: [PATCH] scripted: handle method signature change from 0.12 to 0.13. Fixes #781. --- scripted/plugin/ScriptedPlugin.scala | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/scripted/plugin/ScriptedPlugin.scala b/scripted/plugin/ScriptedPlugin.scala index aa51e7c90..2ee0042d7 100644 --- a/scripted/plugin/ScriptedPlugin.scala +++ b/scripted/plugin/ScriptedPlugin.scala @@ -38,15 +38,26 @@ 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], classOf[Array[String]]) + (m) => try get012Method(m) catch { case e12: NoSuchMethodException => + try get013Method(m) catch { case _: NoSuchMethodException => throw e12 } + } } + private[this] def get012Method(m: AnyRef): Method = + m.getClass.getMethod("run", classOf[File], classOf[Boolean], classOf[String], classOf[String], classOf[String], classOf[Array[String]], classOf[File], classOf[Array[String]]) + private[this] def get013Method(m: AnyRef): Method = + m.getClass.getMethod("run", classOf[File], classOf[Boolean], classOf[Array[String]], classOf[File], classOf[Array[String]]) + def scriptedTask: Initialize[InputTask[Unit]] = InputTask(_ => complete.Parsers.spaceDelimited("")) { result => (scriptedDependencies, scriptedTests, scriptedRun, sbtTestDirectory, scriptedBufferLog, scriptedSbt, scriptedScalas, sbtLauncherTask, 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.toArray) } - catch { case e: java.lang.reflect.InvocationTargetException => throw e.getCause } + def invoke12 = r.invoke(m, testdir, bufferlog: java.lang.Boolean, version.toString, scriptedScalas.build, scriptedScalas.versions, args.toArray, launcher, launchOpts.toArray) + def invoke13 = r.invoke(m, testdir, bufferlog: java.lang.Boolean, args.toArray, launcher, launchOpts.toArray) + try invoke12 catch { + case e: InvocationTargetException => throw e.getCause + case i: IllegalArgumentException => + try invoke13 catch { case e: InvocationTargetException => throw e.getCause } + } } }