diff --git a/build.sbt b/build.sbt
index 9c65cad8612062a40ad17857359b273ae9331676..817f553b68ec7119180abe76d972cd02be57746a 100644
--- a/build.sbt
+++ b/build.sbt
@@ -12,5 +12,10 @@ scalacOptions += "-unchecked"
 
 libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.9.1-1"
 
+libraryDependencies += "org.scalatest" %% "scalatest" % "1.8" % "test"
+
 unmanagedBase <<= baseDirectory { base => base / "unmanaged" }
 
+fork in run := true
+
+fork in test := true
diff --git a/src/main/scala/leon/Main.scala b/src/main/scala/leon/Main.scala
index b7681eaf955831465f2e8c2100ec8296ee1c6494..f14d3b33c8c85370e8ee8f416a67ab6a52be6078 100644
--- a/src/main/scala/leon/Main.scala
+++ b/src/main/scala/leon/Main.scala
@@ -92,7 +92,7 @@ object Main {
 
   implicit def phaseToPipeline[F, T](phase: LeonPhase[F, T]): Pipeline[F, T] = new PipeCons(phase, new PipeNil())
 
-  def computePipeLine(settings: Settings): Pipeline[List[String], Unit] = {
+  def computePipeline(settings: Settings): Pipeline[List[String], Unit] = {
     import purescala.Definitions.Program
 
     val pipeBegin = phaseToPipeline(plugin.ExtractionPhase)
@@ -135,7 +135,7 @@ object Main {
     val ctx = processOptions(reporter, args.toList)
 
     // Compute leon pipeline
-    val pipeline = computePipeLine(ctx.settings)
+    val pipeline = computePipeline(ctx.settings)
 
     // Run phases
     pipeline.run(ctx)(args.toList)
diff --git a/src/main/scala/leon/Reporter.scala b/src/main/scala/leon/Reporter.scala
index 2cdea3d02f99f63c7de31a7f86ca5f4815056c08..03512770fc9c84d9d11a41b2124fafdc6683e506 100644
--- a/src/main/scala/leon/Reporter.scala
+++ b/src/main/scala/leon/Reporter.scala
@@ -57,6 +57,11 @@ class DefaultReporter extends Reporter {
 }
 
 class QuietReporter extends DefaultReporter {
-  override def warning(msg: Any) = {}
-  override def info(msg: Any) = {}
+  override def warning(msg : Any) = {}
+  override def info(msg : Any) = {}
+}
+
+class SilentReporter extends QuietReporter {
+  override def error(msg : Any) = {}
+  override def fatalError(msg : Any) = throw new Exception("Fatal error: " + msg.toString)
 }
diff --git a/src/test/scala/leon/test/Test.scala b/src/test/scala/leon/test/Test.scala
new file mode 100644
index 0000000000000000000000000000000000000000..ed3549395b971f0e12fbdb8a8c7656526fe936e8
--- /dev/null
+++ b/src/test/scala/leon/test/Test.scala
@@ -0,0 +1,9 @@
+package leon.test
+
+import org.scalatest.FunSuite
+
+class Test extends FunSuite {
+  test("Tests work.") {
+    assert(true)
+  }
+}
diff --git a/src/test/scala/leon/test/ValidPrograms.scala b/src/test/scala/leon/test/ValidPrograms.scala
new file mode 100644
index 0000000000000000000000000000000000000000..cb444bb140845af72db7ac0272dffa511f515f40
--- /dev/null
+++ b/src/test/scala/leon/test/ValidPrograms.scala
@@ -0,0 +1,23 @@
+package leon
+package test
+
+import org.scalatest.FunSuite
+
+class ValidPrograms extends FunSuite {
+  test("Some program is valid.") {
+    val ctx = LeonContext(
+      Settings(
+        synthesis = false,
+        xlang     = false,
+        analyze   = true
+      ),
+      new SilentReporter
+    )
+
+    val pipeline = Main.computePipeline(ctx.settings) 
+
+    val result = pipeline.run(ctx)("/home/psuter/Test.scala" :: Nil)
+
+    assert(true)
+  }
+}