summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2011-03-01 18:29:40 +0000
committerIulian Dragos <jaguarul@gmail.com>2011-03-01 18:29:40 +0000
commita07df6427f37849f9fc9456acc937082919b23d6 (patch)
treea2d177e202a23d712cbd2fe71b7ee7887c666908
parentfdaa0a7a0178eab124d65f96e872c07c4400c94a (diff)
downloadscala-a07df6427f37849f9fc9456acc937082919b23d6.tar.gz
scala-a07df6427f37849f9fc9456acc937082919b23d6.tar.bz2
scala-a07df6427f37849f9fc9456acc937082919b23d6.zip
Long overdue rehaul of presentation compiler te...
Long overdue rehaul of presentation compiler tests. Added support for options file, and switched simple-tests to use the STARR library on the test classpath. Put any options you need passed to the presentation compiler in a file with the same name as the test, ending in '.opts'. Currently it's used to set the -bootclasspath for simple-tests. Check the contents of simple-tests.opts for all the options. IMPORTANT: when committing a new STARR, you need to check this test. Most likely, you *will* break it otherwise. review by extempore
-rw-r--r--src/compiler/scala/tools/nsc/interactive/tests/InteractiveTest.scala40
-rw-r--r--test/files/presentation/simple-tests.check22
-rw-r--r--test/files/presentation/simple-tests.opts17
3 files changed, 58 insertions, 21 deletions
diff --git a/src/compiler/scala/tools/nsc/interactive/tests/InteractiveTest.scala b/src/compiler/scala/tools/nsc/interactive/tests/InteractiveTest.scala
index 4345c83014..a00fd44ed3 100644
--- a/src/compiler/scala/tools/nsc/interactive/tests/InteractiveTest.scala
+++ b/src/compiler/scala/tools/nsc/interactive/tests/InteractiveTest.scala
@@ -43,18 +43,46 @@ abstract class InteractiveTest {
val settings = new Settings
val reporter= new StoreReporter
- // need this so that the classpath comes from what partest
- // instead of scala.home
- settings.usejavacp.value = true
-
/** The root directory for this test suite, usually the test kind ("test/files/presentation"). */
val outDir = Path(Option(System.getProperty("partest.cwd")).getOrElse("."))
/** The base directory for this test, usually a subdirectory of "test/files/presentation/" */
val baseDir = Option(System.getProperty("partest.testname")).map(outDir / _).getOrElse(Path("."))
-// settings.YpresentationDebug.value = true
- lazy val compiler = new Global(settings, reporter)
+ /** If there's a file ending in .opts, read it and parse it for cmd line arguments. */
+ val argsString = {
+ val optsFile = outDir / "%s.opts".format(System.getProperty("partest.testname"))
+ val str = try File(optsFile).slurp() catch {
+ case e: java.io.IOException => ""
+ }
+ str.lines.filter(!_.startsWith("#")).mkString(" ")
+ }
+
+ def prepareSettings() {
+ // need this so that the classpath comes from what partest
+ // instead of scala.home
+ settings.usejavacp.value = !argsString.contains("-bootclasspath")
+
+ // pass any options coming from outside
+ settings.processArgumentString(argsString) match {
+ case (false, rest) =>
+ println("error processing arguments (unprocessed: %s)".format(rest))
+ case _ => ()
+ }
+ }
+
+ protected def printClassPath {
+ println("\toutDir: %s".format(outDir.path))
+ println("\tbaseDir: %s".format(baseDir.path))
+ println("\targsString: %s".format(argsString))
+ println("\tbootClassPath: %s".format(settings.bootclasspath.value))
+ println("\tverbose: %b".format(settings.verbose.value))
+ }
+
+ lazy val compiler = {
+ prepareSettings()
+ new Global(settings, reporter)
+ }
def sources(filename: String*): Seq[SourceFile] =
for (f <- filename) yield
diff --git a/test/files/presentation/simple-tests.check b/test/files/presentation/simple-tests.check
index 2a7110192e..b90dfce77c 100644
--- a/test/files/presentation/simple-tests.check
+++ b/test/files/presentation/simple-tests.check
@@ -3,7 +3,7 @@ askTypeCompletion at Tester.scala(16,25)
================================================================================
[response] aksTypeCompletion at (16,25)
-retreived 76 members
+retreived 75 members
TypeMember(method !=,(x$1: AnyRef)Boolean,true,true,<none>)
TypeMember(method !=,(x$1: Any)Boolean,true,true,<none>)
TypeMember(method ==,(x$1: AnyRef)Boolean,true,true,<none>)
@@ -46,8 +46,6 @@ TypeMember(method formatted,(fmtstr: String)String,true,false,method any2stringa
TypeMember(method hashCode,()Int,true,true,<none>)
TypeMember(value helpDescription,String,false,true,<none>)
TypeMember(method helpSyntax,=> String,true,true,<none>)
-TypeMember(method internalOnly,()Tester.this.settings.verbose.type,true,true,<none>)
-TypeMember(variable internalSetting,Boolean,false,true,<none>)
TypeMember(method isAdvanced,=> Boolean,true,true,<none>)
TypeMember(method isDefault,=> Boolean,true,true,<none>)
TypeMember(method isForDebug,=> Boolean,true,true,<none>)
@@ -68,6 +66,7 @@ TypeMember(method toString,()String,true,true,<none>)
TypeMember(method tryToSet,(args: List[String])Some[List[String]],true,false,<none>)
TypeMember(method tryToSetColon,(args: List[String])Option[Tester.this.settings.ResultOfTryToSet],true,true,<none>)
TypeMember(method tryToSetFromPropertyValue,(s: String)Unit,true,false,<none>)
+TypeMember(method tryToSetProperty,(args: List[String])Option[Tester.this.settings.ResultOfTryToSet],true,true,<none>)
TypeMember(method unparse,=> List[String],true,false,<none>)
TypeMember(variable v,Boolean,false,false,<none>)
TypeMember(method value,=> Tester.this.settings.verbose.T,true,true,<none>)
@@ -133,7 +132,7 @@ askTypeCompletion at Tester.scala(27,23)
================================================================================
[response] aksTypeCompletion at (27,23)
-retreived 203 members
+retreived 196 members
TypeMember(method !=,(x$1: AnyRef)Boolean,true,true,<none>)
TypeMember(method !=,(x$1: Any)Boolean,true,true,<none>)
TypeMember(method ==,(x$1: AnyRef)Boolean,true,true,<none>)
@@ -155,8 +154,6 @@ TypeMember(method ChoiceSetting,(name: String,helpArg: String,descr: String,choi
TypeMember(class IntSetting,Tester.this.settings.IntSetting,true,true,<none>)
TypeMember(method IntSetting,(name: String,descr: String,default: Int,range: Option[(Int, Int)],parser: (String) => Option[Int])Tester.this.settings.IntSetting,true,true,<none>)
TypeMember(trait InternalSetting,Tester.this.settings.InternalSetting,true,true,<none>)
-TypeMember(class MapSetting,Tester.this.settings.MapSetting,true,true,<none>)
-TypeMember(method MapSetting,(name: String,prefix: String,descr: String)Tester.this.settings.MapSetting,true,true,<none>)
TypeMember(class MultiStringSetting,Tester.this.settings.MultiStringSetting,true,true,<none>)
TypeMember(method MultiStringSetting,(name: String,arg: String,descr: String)Tester.this.settings.MultiStringSetting,true,true,<none>)
TypeMember(class OutputDirs,Tester.this.settings.OutputDirs,true,true,<none>)
@@ -195,18 +192,17 @@ TypeMember(value Ybuildmanagerdebug,Tester.this.settings.BooleanSetting,false,tr
TypeMember(value Ycompacttrees,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value Ycompletion,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value YdepMethTpes,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Ygenjavap,Tester.this.settings.StringSetting,false,true,<none>)
TypeMember(value Yhelp,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value Yidedebug,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value Ylogcp,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value YmethodInfer,Tester.this.settings.BooleanSetting,false,true,<none>)
+TypeMember(value Ymurmur,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value Ynogenericsig,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value Ynosqueeze,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value Ynotnull,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value Ypmatdebug,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value Ypmatnaive,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value YpresentationDebug,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value YpresentationDelay,Tester.this.settings.IntSetting,false,true,<none>)
TypeMember(value YpresentationLog,Tester.this.settings.StringSetting,false,true,<none>)
TypeMember(value YpresentationReplay,Tester.this.settings.StringSetting,false,true,<none>)
TypeMember(value YpresentationVerbose,Tester.this.settings.BooleanSetting,false,true,<none>)
@@ -218,9 +214,9 @@ TypeMember(value Yrecursion,Tester.this.settings.IntSetting,false,true,<none>)
TypeMember(value Yrepldebug,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value YrichExes,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value Yshow,Tester.this.settings.PhasesSetting,false,true,<none>)
-TypeMember(value Yshowsyms,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value Ystatistics,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value Ytyperdebug,Tester.this.settings.BooleanSetting,false,true,<none>)
+TypeMember(value Yverifysigs,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value YvirtClasses,Boolean,false,true,<none>)
TypeMember(value Ywarndeadcode,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(method add,[T <: Tester.this.settings.Setting](s: T)T,false,true,<none>)
@@ -241,7 +237,6 @@ TypeMember(method copy,()scala.tools.nsc.Settings,true,true,<none>)
TypeMember(value d,Tester.this.settings.OutputSetting,false,true,<none>)
TypeMember(value debug,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(method debuginfo,=> Tester.this.settings.ChoiceSetting,true,true,<none>)
-TypeMember(value defines,Tester.this.settings.MapSetting,false,true,<none>)
TypeMember(method dependenciesFile,=> Tester.this.settings.StringSetting,true,true,<none>)
TypeMember(value dependencyfile,Tester.this.settings.StringSetting,false,true,<none>)
TypeMember(value deprecation,Tester.this.settings.BooleanSetting,false,true,<none>)
@@ -260,10 +255,10 @@ TypeMember(method equals,(that: Any)Boolean,true,true,<none>)
TypeMember(value errorFn,(String) => Unit,false,false,<none>)
TypeMember(value explaintypes,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(variable explicitParentLoader,Option[java.lang.ClassLoader],false,true,<none>)
-TypeMember(value exposeEmptyPackage,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value extdirs,Tester.this.settings.PathSetting,false,true,<none>)
TypeMember(method finalize,()Unit,false,true,<none>)
TypeMember(method formatted,(fmtstr: String)String,true,false,method any2stringadd)
+TypeMember(value fscShutdown,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value future,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value g,Tester.this.settings.ChoiceSetting,false,true,<none>)
TypeMember(value genPhaseGraph,Tester.this.settings.StringSetting,false,true,<none>)
@@ -274,7 +269,6 @@ TypeMember(value inline,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(method isInstanceOf,[T0]=> Boolean,true,true,<none>)
TypeMember(value javabootclasspath,Tester.this.settings.PathSetting,false,true,<none>)
TypeMember(value javaextdirs,Tester.this.settings.PathSetting,false,true,<none>)
-TypeMember(value jvmargs,Tester.this.settings.MapSetting,false,true,<none>)
TypeMember(value log,Tester.this.settings.PhasesSetting,false,true,<none>)
TypeMember(method lookupSetting,(cmd: String)Option[Tester.this.settings.Setting],true,true,<none>)
TypeMember(value make,Tester.this.settings.ChoiceSetting,false,true,<none>)
@@ -283,7 +277,6 @@ TypeMember(value noCompletion,Tester.this.settings.BooleanSetting,false,true,<no
TypeMember(value noForwarders,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value noSelfCheck,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value noassertions,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value nobootcp,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value noimports,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value nospecialization,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(method notify,()Unit,true,true,<none>)
@@ -323,7 +316,6 @@ TypeMember(method synchronized,[T0](x$1: T0)T0,true,true,<none>)
TypeMember(value target,Tester.this.settings.ChoiceSetting,false,true,<none>)
TypeMember(method toConciseString,=> String,true,true,<none>)
TypeMember(method toString,()String,true,true,<none>)
-TypeMember(value toolcp,Tester.this.settings.PathSetting,false,true,<none>)
TypeMember(value unchecked,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value uniqid,Tester.this.settings.BooleanSetting,false,true,<none>)
TypeMember(value usejavacp,Tester.this.settings.BooleanSetting,false,true,<none>)
@@ -367,7 +359,7 @@ TypeMember(method file,=> scala.tools.nsc.io.AbstractFile,true,false,<none>)
TypeMember(method finalize,()Unit,false,true,<none>)
TypeMember(method formatted,(fmtstr: String)String,true,false,method any2stringadd)
TypeMember(method hashCode,()Int,true,true,<none>)
-TypeMember(method identifier,(pos: scala.tools.nsc.util.Position)Option[String],true,false,<none>)
+TypeMember(method identifier,(pos: scala.tools.nsc.util.Position,compiler: scala.tools.nsc.Global)Option[String],true,false,<none>)
TypeMember(method isInstanceOf,[T0]=> Boolean,true,true,<none>)
TypeMember(method isLineBreak,(idx: Int)Boolean,true,false,<none>)
TypeMember(method isSelfContained,=> Boolean,true,false,<none>)
diff --git a/test/files/presentation/simple-tests.opts b/test/files/presentation/simple-tests.opts
new file mode 100644
index 0000000000..226b40a9f5
--- /dev/null
+++ b/test/files/presentation/simple-tests.opts
@@ -0,0 +1,17 @@
+# This file contains command line options that are passed to the presentation compiler
+# Lines starting with # are stripped, and you can split arguments on several lines.
+
+# The -bootclasspath option is treated specially by the test framework: if it's not specified
+# in this file, the presentation compiler will pick up the scala-library/compiler that's on the
+# java classpath used to run this test (usually build/pack)
+
+# Any option can be passed this way, like presentation debug
+# -Ypresentation-debug
+
+# the classpath is relative to the current working directory. That means it depends where you're
+# running partest from. Run it from the root scala checkout for these files to resolve correctly
+# (by default when running 'ant test', or 'test/partest').
+-bootclasspath lib/scala-compiler.jar:lib/scala-library.jar:lib/fjbg.jar
+
+# the following line would test using the quick compiler
+# -bootclasspath build/quick/classes/compiler:build/quick/classes/library:lib/fjbg.jar