Skip to content

Commit

Permalink
Pending functionality for JUnit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Joakim Ohlrogge committed Mar 4, 2011
0 parents commit 3425d43
Show file tree
Hide file tree
Showing 9 changed files with 96 additions and 0 deletions.
9 changes: 9 additions & 0 deletions .ensime
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
;; This config was generated using ensime-config-gen. Feel free to customize its contents manually.

(

:project-package "poju4s"

:use-sbt t

)
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
target/
lib_managed/
src_managed/
project/boot/
*~
.#
8 changes: 8 additions & 0 deletions project/build.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#Project properties
#Fri Mar 04 14:57:56 CET 2011
project.organization=johlrogge
project.name=poju4s
sbt.version=0.7.4
project.version=1.0
build.scala.versions=2.8.1
project.initialize=false
6 changes: 6 additions & 0 deletions project/build/Poju4sProject.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import sbt._

class Poju4s(info:ProjectInfo) extends DefaultProject(info) {
val junitInterface = "com.novocode" % "junit-interface" % "0.5" % "test->default"
val junit = "junit" % "junit" % "4.8.+" % "runtimeb"
}
7 changes: 7 additions & 0 deletions src/main/scala/poju4s/FixedButPendingException.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package poju4s

import junit.framework.AssertionFailedError

class FixedButPendingException(pendingReason:String) extends AssertionFailedError("marked as pending because "+ pendingReason + "; but was fixed") {

}
5 changes: 5 additions & 0 deletions src/main/scala/poju4s/Log.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package poju4s

trait Log {
def warn(message: => String)
}
13 changes: 13 additions & 0 deletions src/main/scala/poju4s/Pending.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package poju4s

trait Pending {
val log: Log
def pending(reason: String)(spec: => Unit) {
(try {
spec
None
} catch {
case e: Throwable => Some("pending: " + reason)
}) map (log.warn(_)) orElse(throw new FixedButPendingException(reason))
}
}
14 changes: 14 additions & 0 deletions src/main/scala/poju4s/TestLog.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package poju4s

/**
* Mixin this trait to get a list of messages logged in runtime
*/
trait TestLog {
var messages:List[LogMessage] = Nil
val log:Log = new Log {
def warn(msg: => String) = messages = Warn(msg) :: messages
}
}

sealed trait LogMessage
case class Warn(message:String) extends LogMessage
28 changes: 28 additions & 0 deletions src/test/scala/poju4s/PendingSpec.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package poju4s

import org.junit._
import org.junit.Assert._
import org.hamcrest.CoreMatchers._

class PendingSpec extends Pending with TestLog {
@Test
def aPendingFailingTestDoesNotReportFailures = pending("supposed to be pending, not failing")({
assertThat(true, is(false))
})

@Test
def aPendingTestLogsThatItIsPending {
pending("reason") {
assertThat(true, is(false))
}
messages.headOption map (assertEquals(Warn("pending: reason"), _)) orElse (Some(fail("Nothing was logged")))
}

@Test(expected = classOf[FixedButPendingException])
def aFixedPendingTestStartsFailing {
pending("reason") {
// succeeds
}
}

}

0 comments on commit 3425d43

Please sign in to comment.