From 7442778ce912c4f7dfda29da046dcd7a7228ef4b Mon Sep 17 00:00:00 2001
From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch>
Date: Fri, 9 Oct 2015 14:52:56 +0200
Subject: [PATCH] Simplify how we find resource dir. in tests

---
 build.sbt                                     |  3 +-
 .../testcases/TestCasesCompile.scala          |  8 +++--
 .../scala/leon/test/LeonRegressionSuite.scala | 31 +++----------------
 3 files changed, 11 insertions(+), 31 deletions(-)

diff --git a/build.sbt b/build.sbt
index b7507c6ec..121a1311a 100644
--- a/build.sbt
+++ b/build.sbt
@@ -87,9 +87,10 @@ script := {
 sourceGenerators in Compile <+= Def.task {
   val libFiles = ((baseDirectory.value / "library") ** "*.scala").getPaths
   val build = (sourceManaged in Compile).value / "leon" / "Build.scala";
-  IO.write(build, s"""|package leon;
+  IO.write(build, s"""|package leon
                       |
                       |object Build {
+                      |  val baseDirectory = \"${baseDirectory.value.toString}\"
                       |  val libFiles = List(
                       |    ${libFiles.mkString("\"\"\"", "\"\"\",\n    \"\"\"", "\"\"\"")}
                       |  )
diff --git a/src/test/scala/leon/regression/testcases/TestCasesCompile.scala b/src/test/scala/leon/regression/testcases/TestCasesCompile.scala
index 97f6ae603..64367b70d 100644
--- a/src/test/scala/leon/regression/testcases/TestCasesCompile.scala
+++ b/src/test/scala/leon/regression/testcases/TestCasesCompile.scala
@@ -19,8 +19,6 @@ class TestCasesCompile extends LeonRegressionSuite {
 
   val baseDir = "regression/testcases/"
 
-  val slashes = resourceDir(baseDir).getAbsolutePath.split("/").toList.size
-
   val allTests = (filesIn(baseDir+"repair/") ++
                  filesIn(baseDir+"runtime/") ++
                  filesIn(baseDir+"synthesis/") ++
@@ -28,7 +26,11 @@ class TestCasesCompile extends LeonRegressionSuite {
                  filesIn(baseDir+"web/")).sortBy(_.getAbsolutePath)
 
   allTests.foreach { f =>
-    val name = f.getAbsolutePath.split("/").toList.drop(slashes).mkString("/")
+
+    val path = f.getAbsolutePath
+
+    val index = path.indexOf(baseDir)
+    val name = path.drop(index)
 
     test("Compiling "+name) {
 
diff --git a/src/test/scala/leon/test/LeonRegressionSuite.scala b/src/test/scala/leon/test/LeonRegressionSuite.scala
index 78c56589b..07ca12b58 100644
--- a/src/test/scala/leon/test/LeonRegressionSuite.scala
+++ b/src/test/scala/leon/test/LeonRegressionSuite.scala
@@ -5,7 +5,6 @@ package leon.test
 import leon._
 import leon.utils._
 
-import scala.io.Source
 import org.scalatest._
 import org.scalatest.time.Span
 import org.scalatest.concurrent._
@@ -15,8 +14,8 @@ import org.scalatest.exceptions.TestFailedException
 import java.io.File
 
 trait LeonRegressionSuite extends FunSuite with Timeouts with BeforeAndAfterEach {
-  // Hard-code resource directory, for Eclipse purposes
-  val resourceDirHard = "src/test/resources/"
+
+  val regressionTestDirectory = "src/test/resources"
 
   def createLeonContext(opts: String*): LeonContext = {
     val reporter = new TestSilentReporter
@@ -66,23 +65,6 @@ trait LeonRegressionSuite extends FunSuite with Timeouts with BeforeAndAfterEach
   }
 
   protected val all : String=>Boolean = (s : String) => true
-
-
-  def resourceDir(dir : String) : File = {
-
-    val d = this.getClass.getClassLoader.getResource(dir)
-
-    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)
-    }
-  }
-
-
-  
   
   def scanFilesIn(f: File, filter: String=>Boolean = all, recursive: Boolean = false): Iterable[File] = {
     Option(f.listFiles()).getOrElse(Array()).flatMap{f =>
@@ -96,13 +78,8 @@ trait LeonRegressionSuite extends FunSuite with Timeouts with BeforeAndAfterEach
 
   def filesInResourceDir(dir : String, filter : String=>Boolean = all, recursive: Boolean = false) : Iterable[File] = {
 
-    val d = this.getClass.getClassLoader.getResource(dir)
-
-    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)
+    val baseDir = new File(s"${Build.baseDirectory}/$regressionTestDirectory/$dir")
 
-    scanFilesIn(asFile, filter, recursive)
+    scanFilesIn(baseDir, filter, recursive)
   }
 }
-- 
GitLab