From 45b38fcb5cb5f9ad0aca8f64827ae1f1c683d0df Mon Sep 17 00:00:00 2001
From: "Emmanouil (Manos) Koukoutos" <emmanouil.koukoutos@epfl.ch>
Date: Tue, 18 Mar 2014 12:03:54 +0100
Subject: [PATCH] Make testing compatible with Eclipse + ScalaTest

---
 src/test/scala/leon/test/LeonTestSuite.scala  | 36 +++++++++++++++----
 .../scala/leon/test/TestSilentReporter.scala  |  4 +--
 .../test/evaluators/EvaluatorsTests.scala     | 12 +++----
 .../scala/leon/test/purescala/DataGen.scala   |  4 +--
 .../scala/leon/test/purescala/LikelyEq.scala  |  4 +--
 .../leon/test/purescala/LikelyEqSuite.scala   |  5 +--
 .../test/purescala/TransformationTests.scala  |  4 +--
 .../purescala/TreeNormalizationsTests.scala   |  6 ++--
 .../leon/test/purescala/TreeOpsTests.scala    |  6 ++--
 .../scala/leon/test/purescala/TreeTests.scala |  6 ++--
 .../test/solvers/EnumerationSolverTests.scala |  4 +--
 .../test/solvers/TimeoutSolverTests.scala     |  4 +--
 .../test/solvers/z3/FairZ3SolverTests.scala   |  4 +--
 .../solvers/z3/FairZ3SolverTestsNewAPI.scala  |  4 +--
 .../z3/UninterpretedZ3SolverTests.scala       |  5 +--
 .../leon/test/synthesis/AlgebraSuite.scala    |  4 +--
 .../test/synthesis/LinearEquationsSuite.scala |  4 +--
 .../synthesis/SynthesisRegressionSuite.scala  |  7 ++--
 .../leon/test/synthesis/SynthesisSuite.scala  |  5 ++-
 .../termination/TerminationRegression.scala   |  7 ++--
 .../LibraryVerificationRegression.scala       |  8 +++--
 .../PureScalaVerificationRegression.scala     |  7 ++--
 .../XLangVerificationRegression.scala         |  7 ++--
 23 files changed, 95 insertions(+), 62 deletions(-)

diff --git a/src/test/scala/leon/test/LeonTestSuite.scala b/src/test/scala/leon/test/LeonTestSuite.scala
index fec6f08f9..fedf6ceff 100644
--- a/src/test/scala/leon/test/LeonTestSuite.scala
+++ b/src/test/scala/leon/test/LeonTestSuite.scala
@@ -1,8 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon
-package test
+package leon.test
 
+import leon._
+import leon.{LeonContext,Settings}
 import leon.utils._
 
 import scala.io.Source
@@ -14,6 +15,12 @@ import org.scalatest.exceptions.TestFailedException
 import java.io.File
 
 trait LeonTestSuite extends FunSuite with Timeouts with BeforeAndAfterEach {
+  
+  // Hard-code output directory, for Eclipse purposes
+  def outputDirHard(path : String) = new File("target/scala-2.10/test-classes/regression/" + path)
+  // Hard-code resource directory, for Eclipse purposes
+  val resourceDirHard = "src/test/resources/regression/"
+  
   def now() = {
     System.currentTimeMillis
   }
@@ -129,18 +136,35 @@ trait LeonTestSuite extends FunSuite with Timeouts with BeforeAndAfterEach {
     }
   }
 
-  private val all : String=>Boolean = (s : String) => true
+  protected val all : String=>Boolean = (s : String) => true
 
-  def filesInResourceDir(dir : String, filter : String=>Boolean = all) : Iterable[File] = {
+ 
+  def resourceDir(dir : String) : File = {
     import scala.collection.JavaConversions._
 
     val d = this.getClass.getClassLoader.getResource(dir)
 
     if(d == null || d.getProtocol != "file") {
-      assert(false, "Tests have to be run from within `sbt`, for otherwise the test files will be harder to access (and we dislike that).")
+      // We are in Eclipse. The only way we are saved is by hard-coding the path
+      new File(resourceDirHard + dir)
+    }
+    else {
+      new File(d.toURI())
     }
+  }
+
+
+  
+  
+  def filesInResourceDir(dir : String, filter : String=>Boolean = all) : Iterable[File] = {
+    import scala.collection.JavaConversions._
+
+    val d = this.getClass.getClassLoader.getResource(dir)
 
-    val asFile = new File(d.toURI())
+    val asFile = if(d == null || d.getProtocol != "file") {
+      // We are in Eclipse. The only way we are saved is by hard-coding the path
+      new File(resourceDirHard + dir)
+    } else new File(d.toURI())
 
     asFile.listFiles().filter(f => filter(f.getPath()))
   }
diff --git a/src/test/scala/leon/test/TestSilentReporter.scala b/src/test/scala/leon/test/TestSilentReporter.scala
index 7f2fb45ae..47e3d83a7 100644
--- a/src/test/scala/leon/test/TestSilentReporter.scala
+++ b/src/test/scala/leon/test/TestSilentReporter.scala
@@ -1,7 +1,7 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon
-package test
+package leon.test
+import leon.{DefaultReporter,Settings}
 
 class TestSilentReporter extends DefaultReporter(Settings()) {
   var lastErrors: List[String] = Nil
diff --git a/src/test/scala/leon/test/evaluators/EvaluatorsTests.scala b/src/test/scala/leon/test/evaluators/EvaluatorsTests.scala
index 055eb3ed6..402cf0225 100644
--- a/src/test/scala/leon/test/evaluators/EvaluatorsTests.scala
+++ b/src/test/scala/leon/test/evaluators/EvaluatorsTests.scala
@@ -1,11 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package evaluators
+package leon.test.evaluators
 
 import leon._
-
-import leon.evaluators._
+import leon.evaluators._ 
 
 import leon.utils.{TemporaryInputPhase, PreprocessingPhase}
 import leon.frontends.scalac.ExtractionPhase
@@ -15,7 +13,7 @@ import leon.purescala.Definitions._
 import leon.purescala.Trees._
 import leon.purescala.TypeTrees._
 
-class EvaluatorsTests extends LeonTestSuite {
+class EvaluatorsTests extends leon.test.LeonTestSuite {
   private implicit lazy val leonContext = testContext
 
   private val evaluatorConstructors : List[(LeonContext,Program)=>Evaluator] = List(
@@ -446,7 +444,7 @@ class EvaluatorsTests extends LeonTestSuite {
   }
 
   test("Infinite Recursion") {
-    import codegen._
+    import leon.codegen._
 
     val p = """|object Program {
                |  import leon.lang._
@@ -462,7 +460,7 @@ class EvaluatorsTests extends LeonTestSuite {
   }
 
   test("Wrong Contracts") {
-    import codegen._
+    import leon.codegen._
 
     val p = """|object Program {
                |  import leon.lang._
diff --git a/src/test/scala/leon/test/purescala/DataGen.scala b/src/test/scala/leon/test/purescala/DataGen.scala
index 9259e483a..f537a06a3 100644
--- a/src/test/scala/leon/test/purescala/DataGen.scala
+++ b/src/test/scala/leon/test/purescala/DataGen.scala
@@ -1,9 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package purescala
+package leon.test.purescala
 
 import leon._
+import leon.test._
 import leon.utils.{TemporaryInputPhase, PreprocessingPhase}
 import leon.frontends.scalac.ExtractionPhase
 
diff --git a/src/test/scala/leon/test/purescala/LikelyEq.scala b/src/test/scala/leon/test/purescala/LikelyEq.scala
index 1fd61a4c5..7c45186ec 100644
--- a/src/test/scala/leon/test/purescala/LikelyEq.scala
+++ b/src/test/scala/leon/test/purescala/LikelyEq.scala
@@ -1,9 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package purescala
+package leon.test.purescala
 
 import leon._
+import leon.test._
 import leon.evaluators._
 import leon.purescala.Common._
 import leon.purescala.Definitions._
diff --git a/src/test/scala/leon/test/purescala/LikelyEqSuite.scala b/src/test/scala/leon/test/purescala/LikelyEqSuite.scala
index 1a5cf7e54..0901ecd2d 100644
--- a/src/test/scala/leon/test/purescala/LikelyEqSuite.scala
+++ b/src/test/scala/leon/test/purescala/LikelyEqSuite.scala
@@ -1,8 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package purescala
+package leon.test.purescala
 
+import leon._
+import leon.test._
 import leon.purescala.Common._
 import leon.purescala.Trees._
 
diff --git a/src/test/scala/leon/test/purescala/TransformationTests.scala b/src/test/scala/leon/test/purescala/TransformationTests.scala
index 2a126a244..4575865d7 100644
--- a/src/test/scala/leon/test/purescala/TransformationTests.scala
+++ b/src/test/scala/leon/test/purescala/TransformationTests.scala
@@ -1,9 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package purescala
+package leon.test.purescala
 
 import leon._
+import leon.test._
 import leon.utils.{TemporaryInputPhase, PreprocessingPhase}
 import leon.frontends.scalac.ExtractionPhase
 
diff --git a/src/test/scala/leon/test/purescala/TreeNormalizationsTests.scala b/src/test/scala/leon/test/purescala/TreeNormalizationsTests.scala
index a414e536a..d655761f2 100644
--- a/src/test/scala/leon/test/purescala/TreeNormalizationsTests.scala
+++ b/src/test/scala/leon/test/purescala/TreeNormalizationsTests.scala
@@ -1,7 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package purescala
+package leon.test.purescala
+
+import leon._
+import leon.test._
 
 import leon.purescala.Common._
 import leon.purescala.Definitions._
diff --git a/src/test/scala/leon/test/purescala/TreeOpsTests.scala b/src/test/scala/leon/test/purescala/TreeOpsTests.scala
index 988c3ffd4..d028ae8d9 100644
--- a/src/test/scala/leon/test/purescala/TreeOpsTests.scala
+++ b/src/test/scala/leon/test/purescala/TreeOpsTests.scala
@@ -1,7 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package purescala
+package leon.test.purescala
+
+import leon._
+import leon.test._
 
 import leon.LeonContext
 
diff --git a/src/test/scala/leon/test/purescala/TreeTests.scala b/src/test/scala/leon/test/purescala/TreeTests.scala
index 6abdf231a..aae0705e5 100644
--- a/src/test/scala/leon/test/purescala/TreeTests.scala
+++ b/src/test/scala/leon/test/purescala/TreeTests.scala
@@ -1,7 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package purescala
+package leon.test.purescala
+
+import leon._
+import leon.test._
 
 import leon.purescala.Common._
 import leon.purescala.Definitions._
diff --git a/src/test/scala/leon/test/solvers/EnumerationSolverTests.scala b/src/test/scala/leon/test/solvers/EnumerationSolverTests.scala
index ac1f4926d..b5bfc4466 100644
--- a/src/test/scala/leon/test/solvers/EnumerationSolverTests.scala
+++ b/src/test/scala/leon/test/solvers/EnumerationSolverTests.scala
@@ -1,9 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package solvers
+package leon.test.solvers
 
 import leon._
+import leon.test._
 import leon.utils.Interruptible
 import leon.solvers._
 import leon.solvers.combinators._
diff --git a/src/test/scala/leon/test/solvers/TimeoutSolverTests.scala b/src/test/scala/leon/test/solvers/TimeoutSolverTests.scala
index 109895cdc..0c4bd2791 100644
--- a/src/test/scala/leon/test/solvers/TimeoutSolverTests.scala
+++ b/src/test/scala/leon/test/solvers/TimeoutSolverTests.scala
@@ -1,9 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package solvers
+package leon.test.solvers
 
 import leon._
+import leon.test._
 import leon.utils.Interruptible
 import leon.solvers._
 import leon.solvers.combinators._
diff --git a/src/test/scala/leon/test/solvers/z3/FairZ3SolverTests.scala b/src/test/scala/leon/test/solvers/z3/FairZ3SolverTests.scala
index 0e520d182..7ed2aa9bd 100644
--- a/src/test/scala/leon/test/solvers/z3/FairZ3SolverTests.scala
+++ b/src/test/scala/leon/test/solvers/z3/FairZ3SolverTests.scala
@@ -1,8 +1,8 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package solvers.z3
+package leon.test.solvers.z3
 
+import leon.test._
 import leon.purescala.Common._
 import leon.purescala.Definitions._
 import leon.purescala.Trees._
diff --git a/src/test/scala/leon/test/solvers/z3/FairZ3SolverTestsNewAPI.scala b/src/test/scala/leon/test/solvers/z3/FairZ3SolverTestsNewAPI.scala
index 8ce8d3796..7f489e729 100644
--- a/src/test/scala/leon/test/solvers/z3/FairZ3SolverTestsNewAPI.scala
+++ b/src/test/scala/leon/test/solvers/z3/FairZ3SolverTestsNewAPI.scala
@@ -1,8 +1,8 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package solvers.z3
+package leon.test.solvers.z3
 
+import leon.test._
 import leon.purescala.Common._
 import leon.purescala.Definitions._
 import leon.purescala.Trees._
diff --git a/src/test/scala/leon/test/solvers/z3/UninterpretedZ3SolverTests.scala b/src/test/scala/leon/test/solvers/z3/UninterpretedZ3SolverTests.scala
index d4ac0f2e5..a0579dbd4 100644
--- a/src/test/scala/leon/test/solvers/z3/UninterpretedZ3SolverTests.scala
+++ b/src/test/scala/leon/test/solvers/z3/UninterpretedZ3SolverTests.scala
@@ -1,7 +1,8 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package solvers.z3
+package leon.test.solvers.z3
+
+import leon.test._
 
 import leon.purescala.Common._
 import leon.purescala.Definitions._
diff --git a/src/test/scala/leon/test/synthesis/AlgebraSuite.scala b/src/test/scala/leon/test/synthesis/AlgebraSuite.scala
index 22b4380a1..bfd30c7b4 100644
--- a/src/test/scala/leon/test/synthesis/AlgebraSuite.scala
+++ b/src/test/scala/leon/test/synthesis/AlgebraSuite.scala
@@ -1,7 +1,7 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package synthesis
+package leon.test.synthesis
+import leon.test._
 
 import leon.synthesis.Algebra._
 
diff --git a/src/test/scala/leon/test/synthesis/LinearEquationsSuite.scala b/src/test/scala/leon/test/synthesis/LinearEquationsSuite.scala
index 84282bbe8..2906f7b2c 100644
--- a/src/test/scala/leon/test/synthesis/LinearEquationsSuite.scala
+++ b/src/test/scala/leon/test/synthesis/LinearEquationsSuite.scala
@@ -1,7 +1,7 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package synthesis
+package leon.test.synthesis
+import leon.test._
 
 import leon.purescala.Trees._
 import leon.purescala.TypeTrees._
diff --git a/src/test/scala/leon/test/synthesis/SynthesisRegressionSuite.scala b/src/test/scala/leon/test/synthesis/SynthesisRegressionSuite.scala
index a6794621b..7531e24cc 100644
--- a/src/test/scala/leon/test/synthesis/SynthesisRegressionSuite.scala
+++ b/src/test/scala/leon/test/synthesis/SynthesisRegressionSuite.scala
@@ -1,8 +1,7 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon
-package test
-package synthesis
+package leon.test.synthesis
+import leon.test._
 
 import leon._
 import leon.purescala.Definitions._
@@ -33,7 +32,7 @@ class SynthesisRegressionSuite extends LeonTestSuite {
 
       val opts = SynthesisOptions(searchBound = Some(bound), allSeeing = true)
 
-      val pipeline = frontends.scalac.ExtractionPhase andThen leon.utils.PreprocessingPhase
+      val pipeline = leon.frontends.scalac.ExtractionPhase andThen leon.utils.PreprocessingPhase
 
       val program = pipeline.run(ctx)(f.getAbsolutePath :: Nil)
 
diff --git a/src/test/scala/leon/test/synthesis/SynthesisSuite.scala b/src/test/scala/leon/test/synthesis/SynthesisSuite.scala
index ea7a93310..cbcc3f230 100644
--- a/src/test/scala/leon/test/synthesis/SynthesisSuite.scala
+++ b/src/test/scala/leon/test/synthesis/SynthesisSuite.scala
@@ -1,8 +1,7 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon.test
-package synthesis
-
+package leon.test.synthesis
+import leon.test._
 import leon._
 import leon.purescala.Definitions._
 import leon.purescala.Trees._
diff --git a/src/test/scala/leon/test/termination/TerminationRegression.scala b/src/test/scala/leon/test/termination/TerminationRegression.scala
index 208917ec6..da5436d03 100644
--- a/src/test/scala/leon/test/termination/TerminationRegression.scala
+++ b/src/test/scala/leon/test/termination/TerminationRegression.scala
@@ -1,8 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon
-package test
-package termination
+package leon.test.termination
+
+import leon._
+import leon.test._
 
 import leon.termination._
 
diff --git a/src/test/scala/leon/test/verification/LibraryVerificationRegression.scala b/src/test/scala/leon/test/verification/LibraryVerificationRegression.scala
index a1d7c2690..faf107ebb 100644
--- a/src/test/scala/leon/test/verification/LibraryVerificationRegression.scala
+++ b/src/test/scala/leon/test/verification/LibraryVerificationRegression.scala
@@ -1,8 +1,10 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon
-package test
-package verification
+package leon.test.verification
+
+import leon._
+import leon.test._
+
 
 import java.io.File
 
diff --git a/src/test/scala/leon/test/verification/PureScalaVerificationRegression.scala b/src/test/scala/leon/test/verification/PureScalaVerificationRegression.scala
index c55300306..86b394053 100644
--- a/src/test/scala/leon/test/verification/PureScalaVerificationRegression.scala
+++ b/src/test/scala/leon/test/verification/PureScalaVerificationRegression.scala
@@ -1,8 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon
-package test
-package verification
+package leon.test.verification
+
+import leon._
+import leon.test._
 
 import leon.verification.{AnalysisPhase,VerificationReport}
 
diff --git a/src/test/scala/leon/test/verification/XLangVerificationRegression.scala b/src/test/scala/leon/test/verification/XLangVerificationRegression.scala
index 726b039e0..680948c28 100644
--- a/src/test/scala/leon/test/verification/XLangVerificationRegression.scala
+++ b/src/test/scala/leon/test/verification/XLangVerificationRegression.scala
@@ -1,8 +1,9 @@
 /* Copyright 2009-2014 EPFL, Lausanne */
 
-package leon
-package test
-package verification
+package leon.test.verification
+
+import leon._
+import leon.test._
 
 import leon.verification.VerificationReport
 import leon.xlang.XlangAnalysisPhase
-- 
GitLab