More plugin tests

This commit is contained in:
Mark Harrah 2009-08-18 10:25:43 -04:00
parent 67e13ad887
commit ec7074a340
2 changed files with 39 additions and 7 deletions

View File

@ -61,6 +61,7 @@ class Analyzer(val global: Global) extends Plugin
catch { case fe: scala.tools.nsc.FatalError => callback.superclassNotFound(name.toString); None }
}
val superclasses = superclassesAll.filter(_.isDefined).map(_.get)
//println("Superclass names: " + superclassNames.mkString(", ") + "\n\tall: " + superclasses.mkString(", "))
for(unit <- currentRun.units)
{

View File

@ -5,17 +5,34 @@ import org.specs.Specification
object CheckBasic extends Specification
{
val basicName = new File("Basic.scala")
val basicSource = "package org.example { object Basic }"
val mainName = new File("Main.scala")
val mainSource = "object Main { def main(args: Array[String]) {} }"
val super1Name = new File("a/Super.scala")
val super2Name = new File("a/Super2.scala")
val midName = new File("b/Middle.scala")
val sub1Name = new File("b/SubA.scala")
val sub2Name = new File("b/SubB.scala")
val sub3Name = new File("SubC.scala")
val super1Source = "package a; trait Super"
val super2Source = "class Super2"
val midSource = "package y.w; trait Mid extends a.Super"
val subSource1 = "package a; trait Sub1 extends y.w.Mid"
val subSource2 = "trait Sub2 extends a.Super"
val subSource3 = "private class F extends a.Super; package c { object Sub3 extends Super2 }"
"Compiling basic file should succeed" in {
val name = new File("Basic.scala")
WithFiles( name -> "package org.example { object Basic }" ){ files =>
WithFiles(basicName -> basicSource){ files =>
TestCompile(files){ loader => Class.forName("org.example.Basic", false, loader) }
}
}
"Analysis plugin" should {
"send source begin and end" in {
val name = new File("Basic.scala")
WithFiles(name -> "object Basic" ) { files =>
WithFiles(basicName -> basicSource) { files =>
CallbackTest(files) { callback =>
(callback.beganSources) must haveTheSameElementsAs(files)
(callback.endedSources) must haveTheSameElementsAs(files)
@ -24,13 +41,27 @@ object CheckBasic extends Specification
}
"detect applications" in {
val name = new File("Main.scala")
WithFiles(name -> "object Main { def main(args: Array[String]) {} }" ) { files =>
WithFiles(mainName -> mainSource ) { files =>
CallbackTest(files) { callback =>
println(callback.applications)
(callback.applications) must haveTheSameElementsAs(files.map(file => (file, "Main")))
}
}
}
"detect subclasses" in {
WithFiles(super1Name -> super1Source, midName -> midSource, sub1Name -> subSource1, sub2Name -> subSource2,
super2Name -> super2Source, sub3Name -> subSource3)
{
case files @ Seq(supFile, midFile, sub1File, sub2File, sup2File, sub3File) =>
CallbackTest(files,Seq( "a.Super", "Super2", "x.Super3")) { (callback, ignore, ignore2) =>
val expected = (sub1File, "a.Super", "a.Sub1", false) :: (sub2File, "a.Super", "a.Sub2", false) ::
(sub3File, "Super2", "Sub3", true) :: Nil
//println(callback.foundSubclasses)
//println(callback.invalidSuperclasses)
(callback.foundSubclasses) must haveTheSameElementsAs(expected)
(callback.invalidSuperclasses) must haveTheSameElementsAs(Seq("x.Super3"))
}
}
}
}
}