summaryrefslogtreecommitdiffstats
path: root/Scala/forcomp/project/RecordingLogger.scala
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2013-05-11 22:30:17 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2016-11-10 18:03:24 +0100
commitf693c7f267e2668be5626413d4eee8600630b6be (patch)
tree10ede8ee23560a228175074a59bab72f9e52a143 /Scala/forcomp/project/RecordingLogger.scala
parent5c5087a4a7f8342946ffe0ccbf1a244d7d4790dc (diff)
downloadcoursera-f693c7f267e2668be5626413d4eee8600630b6be.zip
coursera-f693c7f267e2668be5626413d4eee8600630b6be.tar.gz
Scala : Scala : add forcomp assignment
Diffstat (limited to 'Scala/forcomp/project/RecordingLogger.scala')
-rw-r--r--Scala/forcomp/project/RecordingLogger.scala35
1 files changed, 35 insertions, 0 deletions
diff --git a/Scala/forcomp/project/RecordingLogger.scala b/Scala/forcomp/project/RecordingLogger.scala
new file mode 100644
index 0000000..b886768
--- /dev/null
+++ b/Scala/forcomp/project/RecordingLogger.scala
@@ -0,0 +1,35 @@
+import sbt._
+import collection.mutable.ListBuffer
+
+/**
+ * Logger to capture compiler output, test output
+ */
+
+object RecordingLogger extends Logger {
+ private val buffer = ListBuffer[String]()
+
+ def hasErrors = buffer.nonEmpty
+
+ def readAndClear() = {
+ val res = buffer.mkString("\n")
+ buffer.clear()
+ res
+ }
+
+ def clear() {
+ buffer.clear()
+ }
+
+ def log(level: Level.Value, message: => String) =
+ if (level == Level.Error) {
+ buffer += message
+ }
+
+ // we don't log success here
+ def success(message: => String) = ()
+
+ // invoked when a task throws an exception. invoked late, when the exception is logged, i.e.
+ // just before returning to the prompt. therefore we do nothing: storing the exception in the
+ // buffer would happen *after* the `handleFailure` reads the buffer.
+ def trace(t: => Throwable) = ()
+}