diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-06-10 06:20:37 -0400 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-06-10 06:20:37 -0400 |
commit | 549cb905aa6a4facb3cb12628a76ab8273658170 (patch) | |
tree | 0213972eb9f2fb3f82472063873bf90e18f0446c /src/partest | |
parent | 16c31f4923b3714d2780f0a494b3da07c1ac12bc (diff) | |
parent | e3c318649c4318412c8d7e3cbee4689489f6ccb1 (diff) | |
download | scala-549cb905aa6a4facb3cb12628a76ab8273658170.tar.gz scala-549cb905aa6a4facb3cb12628a76ab8273658170.tar.bz2 scala-549cb905aa6a4facb3cb12628a76ab8273658170.zip |
Merge branch '2.10.x' into topic/merge-v2.10.2-RC1-35-ga54d86b-to-master
Conflicts:
src/partest/scala/tools/partest/DirectTest.scala
Diffstat (limited to 'src/partest')
-rw-r--r-- | src/partest/scala/tools/partest/DirectTest.scala | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/partest/scala/tools/partest/DirectTest.scala b/src/partest/scala/tools/partest/DirectTest.scala index 7f9ca3a321..953b5e5535 100644 --- a/src/partest/scala/tools/partest/DirectTest.scala +++ b/src/partest/scala/tools/partest/DirectTest.scala @@ -6,6 +6,7 @@ package scala.tools.partest import scala.tools.nsc._ +import settings.ScalaVersion import util.{ SourceFile, BatchSourceFile, CommandLineParser } import reporters.{Reporter, ConsoleReporter} @@ -97,4 +98,30 @@ abstract class DirectTest extends App { final def log(msg: => Any) { if (isDebug) Console.err println msg } + + /** + * Run a test only if the current java version is at least the version specified. + */ + def testUnderJavaAtLeast[A](version: String)(yesRun: =>A) = new TestUnderJavaAtLeast(version, { yesRun }) + + class TestUnderJavaAtLeast[A](version: String, yesRun: => A) { + val javaVersion = System.getProperty("java.specification.version") + + // the "ScalaVersion" class parses Java specification versions just fine + val requiredJavaVersion = ScalaVersion(version) + val executingJavaVersion = ScalaVersion(javaVersion) + val shouldRun = executingJavaVersion >= requiredJavaVersion + val preamble = if (shouldRun) "Attempting" else "Doing fallback for" + + def logInfo() = log(s"$preamble java $version specific test under java version $javaVersion") + + /* + * If the current java version is at least 'version' then 'yesRun' is evaluated + * otherwise 'fallback' is + */ + def otherwise(fallback: =>A): A = { + logInfo() + if (shouldRun) yesRun else fallback + } + } } |