aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2017-04-06 13:46:29 +0200
committerFelix Mulder <felix.mulder@gmail.com>2017-04-12 11:31:14 +0200
commit07fab41be7d24e790cd37f625f3d7a10363c45ff (patch)
tree158a1429c35fb3e77c29adc2b6b73001fc37d89d
parent1fced2bb8d684cc56672e84b2e164716c92a21b9 (diff)
downloaddotty-07fab41be7d24e790cd37f625f3d7a10363c45ff.tar.gz
dotty-07fab41be7d24e790cd37f625f3d7a10363c45ff.tar.bz2
dotty-07fab41be7d24e790cd37f625f3d7a10363c45ff.zip
Add `Properties` object for dotty testing props and env
-rw-r--r--compiler/test/dotc/tests.scala6
-rw-r--r--compiler/test/dotty/Jars.scala24
-rw-r--r--compiler/test/dotty/Properties.scala44
-rw-r--r--compiler/test/dotty/tools/dotc/CompilationTests.scala4
4 files changed, 64 insertions, 14 deletions
diff --git a/compiler/test/dotc/tests.scala b/compiler/test/dotc/tests.scala
index 4bb09fd02..c2c38d152 100644
--- a/compiler/test/dotc/tests.scala
+++ b/compiler/test/dotc/tests.scala
@@ -21,8 +21,6 @@ class tests extends CompilerTest {
// tests that match regex '(pos|dotc|run|java|compileStdLib)\.*' would be
// executed as benchmarks.
- def isRunByDrone: Boolean = sys.props.isDefinedAt("DRONE")
-
val defaultOutputDir = "../out/"
val noCheckOptions = List(
@@ -70,7 +68,7 @@ class tests extends CompilerTest {
}
implicit val defaultOptions: List[String] = noCheckOptions ++ {
- if (isRunByDrone) List("-Ycheck:tailrec,resolveSuper,mixin,restoreScopes,labelDef") // should be Ycheck:all, but #725
+ if (dotty.Properties.isRunByDrone) List("-Ycheck:tailrec,resolveSuper,mixin,restoreScopes,labelDef") // should be Ycheck:all, but #725
else List("-Ycheck:tailrec,resolveSuper,mixin,restoreScopes,labelDef")
} ++ checkOptions ++ classPath
@@ -229,7 +227,7 @@ class tests extends CompilerTest {
|../scala-scala/src/library/scala/collection/parallel/mutable/ParSet.scala
|../scala-scala/src/library/scala/collection/mutable/SetLike.scala""".stripMargin)(scala2mode ++ defaultOptions)
- @Test def dotty = {
+ @Test def dottyBooted = {
dottyBootedLib
dottyDependsOnBootedLib
}
diff --git a/compiler/test/dotty/Jars.scala b/compiler/test/dotty/Jars.scala
index 06df9c891..bc000fced 100644
--- a/compiler/test/dotty/Jars.scala
+++ b/compiler/test/dotty/Jars.scala
@@ -2,25 +2,34 @@ package dotty
/** Jars used when compiling test, normally set from the sbt build */
object Jars {
+ /** Dotty library Jar */
val dottyLib: String = sys.env.get("DOTTY_LIB")
- .getOrElse(sys.props("dotty.tests.classes.library"))
+ .getOrElse(Properties.dottyLib)
+ /** Dotty Compiler Jar */
val dottyCompiler: String = sys.env.get("DOTTY_COMPILER")
- .getOrElse(sys.props("dotty.tests.classes.compiler"))
+ .getOrElse(Properties.dottyCompiler)
+ /** Dotty Interfaces Jar */
val dottyInterfaces: String = sys.env.get("DOTTY_INTERFACE")
- .getOrElse(sys.props("dotty.tests.classes.interfaces"))
+ .getOrElse(Properties.dottyInterfaces)
- val dottyExtras: List[String] = Option(sys.env.get("DOTTY_EXTRAS")
- .getOrElse(sys.props("dotty.tests.extraclasspath")))
- .map(_.split(":").toList).getOrElse(Nil)
+ /** Dotty extras classpath from env or properties */
+ val dottyExtras: List[String] = sys.env.get("DOTTY_EXTRAS")
+ .map(_.split(":").toList).getOrElse(Properties.dottyExtras)
+ /** Dotty REPL dependencies */
val dottyReplDeps: List[String] = dottyLib :: dottyExtras
+ /** Dotty test dependencies */
val dottyTestDeps: List[String] =
dottyLib :: dottyCompiler :: dottyInterfaces :: dottyExtras
-
+ /** Gets the scala 2.* library at runtime, note that doing this is unsafe
+ * unless you know that the library will be on the classpath of the running
+ * application. It is currently safe to call this function if the tests are
+ * run by sbt.
+ */
def scalaLibraryFromRuntime: String = findJarFromRuntime("scala-library-2.")
private def findJarFromRuntime(partialName: String) = {
@@ -31,5 +40,4 @@ object Jars {
)
}
}
-
}
diff --git a/compiler/test/dotty/Properties.scala b/compiler/test/dotty/Properties.scala
new file mode 100644
index 000000000..6106c75b9
--- /dev/null
+++ b/compiler/test/dotty/Properties.scala
@@ -0,0 +1,44 @@
+package dotty
+
+/** Runtime properties from defines or environmnent */
+object Properties {
+
+ /** If property is unset or "TRUE" we consider it `true` */
+ private[this] def propIsNullOrTrue(prop: String): Boolean = {
+ val prop = System.getProperty("dotty.tests.interactive")
+ prop == null || prop == "TRUE"
+ }
+
+ /** Are we running on the Drone CI? */
+ val isRunByDrone: Boolean = sys.env.isDefinedAt("DRONE")
+
+ /** Tests should run interactive? */
+ val testsInteractive: Boolean = propIsNullOrTrue("dotty.tests.interactive")
+
+ /** Filter out tests not matching the regex supplied by "dotty.tests.filter"
+ * define
+ */
+ val testsFilter: Option[String] = sys.props.get("dotty.tests.filter")
+
+ /** Should Unit tests run in safe mode?
+ *
+ * For run tests this means that we respawn child JVM processes after each
+ * test, so that they are never reused.
+ */
+ val testsSafeMode: Boolean = sys.props.isDefinedAt("dotty.tests.safemode")
+
+ /** Dotty compiler path provided through define */
+ def dottyCompiler: String = sys.props("dotty.tests.classes.compiler")
+
+ /** Dotty classpath extras provided through define */
+ def dottyExtras: List[String] =
+ Option(sys.props("dotty.tests.extraclasspath"))
+ .map(_.split(":").toList)
+ .getOrElse(Nil)
+
+ /** Dotty interfaces path provided through define */
+ def dottyInterfaces: String = sys.props("dotty.tests.classes.interfaces")
+
+ /** Dotty library path provided through define */
+ def dottyLib: String = sys.props("dotty.tests.classes.library")
+}
diff --git a/compiler/test/dotty/tools/dotc/CompilationTests.scala b/compiler/test/dotty/tools/dotc/CompilationTests.scala
index a3f44c74f..ab7dda850 100644
--- a/compiler/test/dotty/tools/dotc/CompilationTests.scala
+++ b/compiler/test/dotty/tools/dotc/CompilationTests.scala
@@ -16,9 +16,9 @@ class CompilationTests extends SummaryReport with ParallelTesting {
def maxDuration = 180.seconds
def numberOfSlaves = 5
- def safeMode = sys.env.get("dotty.tests.safemode").isDefined
+ def safeMode = Properties.testsSafeMode
def isInteractive = SummaryReport.isInteractive
- def testFilter = sys.props.get("dotty.tests.filter").map(r => new Regex(r))
+ def testFilter = Properties.testsFilter.map(r => new Regex(r))
// Positive tests ------------------------------------------------------------