From 4816991b1865091c9d0fa9defe17458cf07abde0 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 19 May 2012 18:20:20 -0400 Subject: [PATCH] basic support for pending scripted tests --- .../configurations/{test => pending} | 0 .../false-error/{test => pending} | 0 .../new-cyclic/{test => pending} | 0 scripted/sbt/ScriptedTests.scala | 26 +++++++++++++------ 4 files changed, 18 insertions(+), 8 deletions(-) rename sbt/src/sbt-test/dependency-management/configurations/{test => pending} (100%) rename sbt/src/sbt-test/source-dependencies/false-error/{test => pending} (100%) rename sbt/src/sbt-test/source-dependencies/new-cyclic/{test => pending} (100%) diff --git a/sbt/src/sbt-test/dependency-management/configurations/test b/sbt/src/sbt-test/dependency-management/configurations/pending similarity index 100% rename from sbt/src/sbt-test/dependency-management/configurations/test rename to sbt/src/sbt-test/dependency-management/configurations/pending diff --git a/sbt/src/sbt-test/source-dependencies/false-error/test b/sbt/src/sbt-test/source-dependencies/false-error/pending similarity index 100% rename from sbt/src/sbt-test/source-dependencies/false-error/test rename to sbt/src/sbt-test/source-dependencies/false-error/pending diff --git a/sbt/src/sbt-test/source-dependencies/new-cyclic/test b/sbt/src/sbt-test/source-dependencies/new-cyclic/pending similarity index 100% rename from sbt/src/sbt-test/source-dependencies/new-cyclic/test rename to sbt/src/sbt-test/source-dependencies/new-cyclic/pending diff --git a/scripted/sbt/ScriptedTests.scala b/scripted/sbt/ScriptedTests.scala index 91a132ac6..915069d4a 100644 --- a/scripted/sbt/ScriptedTests.scala +++ b/scripted/sbt/ScriptedTests.scala @@ -17,6 +17,7 @@ final class ScriptedTests(resourceBaseDirectory: File, bufferLog: Boolean, sbtVe private val testResources = new Resources(resourceBaseDirectory) val ScriptFilename = "test" + val PendingScriptFilename = "pending" def scriptedTest(group: String, name: String, log: xsbti.Logger): Unit = scriptedTest(group, name, Logger.xlog2Log(log)) @@ -49,33 +50,42 @@ final class ScriptedTests(resourceBaseDirectory: File, bufferLog: Boolean, sbtVe val sbtHandler = new SbtHandler(testDirectory, launcher, buffered, server, launchOpts) new TestScriptParser(Map('$' -> fileHandler, '>' -> sbtHandler, '#' -> CommentHandler)) } + val (file, pending) = { + val normal = new File(testDirectory, ScriptFilename) + val pending = new File(testDirectory, PendingScriptFilename) + if(pending.isFile) (pending, true) else (normal, false) + } + val pendingString = if(pending) " [PENDING]" else "" + def runTest() = { val run = new ScriptRunner val parser = createParser() - run(parser.parse(new File(testDirectory, ScriptFilename))) + run(parser.parse(file)) + } + def testFailed() { + if(pending) buffered.clear() else buffered.stop() + buffered.error("x " + label + pendingString) } try { runTest() - buffered.info("+ " + label) + buffered.info("+ " + label + pendingString) } catch { case e: xsbt.test.TestException => - buffered.stop() - buffered.error("x " + label) + testFailed() e.getCause match { case null | _: java.net.SocketException => buffered.error(" " + e.getMessage) case _ => e.printStackTrace } - throw e + if(!pending) throw e case e: Exception => - buffered.stop() - buffered.error("x " + label) - throw e + testFailed() + if(!pending) throw e } finally { buffered.clear() } }