mirror of https://github.com/sbt/sbt.git
Revert "Add timeout to scripted statements"
This reverts commit 155526fb11.
This commit is contained in:
parent
fe4c5159a1
commit
d5cde98654
|
|
@ -9,10 +9,8 @@
|
|||
package sbt
|
||||
package scriptedtest
|
||||
|
||||
import java.util.concurrent.{ Executors, TimeUnit, TimeoutException }
|
||||
|
||||
import scala.collection.mutable
|
||||
import scala.concurrent.duration._
|
||||
|
||||
import sbt.internal.scripted._
|
||||
|
||||
private[sbt] object BatchScriptRunner {
|
||||
|
|
@ -20,9 +18,8 @@ private[sbt] object BatchScriptRunner {
|
|||
}
|
||||
|
||||
/** Defines an alternative script runner that allows batch execution. */
|
||||
private[sbt] class BatchScriptRunner extends ScriptRunner with AutoCloseable {
|
||||
private[sbt] class BatchScriptRunner extends ScriptRunner {
|
||||
import BatchScriptRunner.States
|
||||
private[this] val service = Executors.newCachedThreadPool()
|
||||
|
||||
/** Defines a method to run batched execution.
|
||||
*
|
||||
|
|
@ -44,35 +41,26 @@ private[sbt] class BatchScriptRunner extends ScriptRunner with AutoCloseable {
|
|||
}
|
||||
}
|
||||
|
||||
private val timeout = 5.minutes
|
||||
def processStatement(handler: StatementHandler, statement: Statement, states: States): Unit = {
|
||||
val state = states(handler).asInstanceOf[handler.State]
|
||||
val nextStateFuture = service.submit(
|
||||
() =>
|
||||
try Right(handler(statement.command, statement.arguments, state))
|
||||
catch { case e: Exception => Left(e) }
|
||||
)
|
||||
try {
|
||||
nextStateFuture.get(timeout.toMillis, TimeUnit.MILLISECONDS) match {
|
||||
case Left(err) =>
|
||||
if (statement.successExpected) {
|
||||
err match {
|
||||
case t: TestFailed =>
|
||||
throw new TestException(statement, "Command failed: " + t.getMessage, null)
|
||||
case _ => throw new TestException(statement, "Command failed", err)
|
||||
}
|
||||
} else
|
||||
()
|
||||
case Right(s) =>
|
||||
if (statement.successExpected)
|
||||
states(handler) = s
|
||||
else
|
||||
throw new TestException(statement, "Command succeeded but failure was expected", null)
|
||||
}
|
||||
} catch {
|
||||
case e: TimeoutException => throw new TestException(statement, "Command timed out", e)
|
||||
val nextState =
|
||||
try Right(handler(statement.command, statement.arguments, state))
|
||||
catch { case e: Exception => Left(e) }
|
||||
nextState match {
|
||||
case Left(err) =>
|
||||
if (statement.successExpected) {
|
||||
err match {
|
||||
case t: TestFailed =>
|
||||
throw new TestException(statement, "Command failed: " + t.getMessage, null)
|
||||
case _ => throw new TestException(statement, "Command failed", err)
|
||||
}
|
||||
} else
|
||||
()
|
||||
case Right(s) =>
|
||||
if (statement.successExpected)
|
||||
states(handler) = s
|
||||
else
|
||||
throw new TestException(statement, "Command succeeded but failure was expected", null)
|
||||
}
|
||||
}
|
||||
|
||||
override def close(): Unit = service.shutdown()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,8 +69,7 @@ final class ScriptedTests(
|
|||
val handlers = createScriptedHandlers(testDirectory, buffer, prop)
|
||||
val runner = new BatchScriptRunner
|
||||
val states = new mutable.HashMap[StatementHandler, StatementHandler#State]()
|
||||
try commonRunTest(label, testDirectory, prescripted, handlers, runner, states, buffer)
|
||||
finally runner.close()
|
||||
commonRunTest(label, testDirectory, prescripted, handlers, runner, states, buffer)
|
||||
}
|
||||
runOrHandleDisabled(label, testDirectory, singleTestRunner, buffer)
|
||||
}
|
||||
|
|
@ -260,10 +259,7 @@ final class ScriptedTests(
|
|||
}
|
||||
|
||||
try runBatchTests
|
||||
finally {
|
||||
runner.cleanUpHandlers(seqHandlers, states)
|
||||
runner.close()
|
||||
}
|
||||
finally runner.cleanUpHandlers(seqHandlers, states)
|
||||
}
|
||||
|
||||
private def runOrHandleDisabled(
|
||||
|
|
@ -316,7 +312,6 @@ final class ScriptedTests(
|
|||
case null | _: SocketException => log.error(s" Cause of test exception: ${t.getMessage}")
|
||||
case _ => if (!pending) t.printStackTrace()
|
||||
}
|
||||
log.play()
|
||||
}
|
||||
if (pending) None else Some(label)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue