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