mirror of https://github.com/sbt/sbt.git
34 lines
1.3 KiB
Scala
34 lines
1.3 KiB
Scala
package xsbt
|
|
|
|
import java.io.File
|
|
import org.specs.Specification
|
|
|
|
object DetectSubclasses extends Specification
|
|
{
|
|
val sources =
|
|
("a/Super.scala" -> "package a; trait Super") ::
|
|
("a/Super2.scala" -> "class Super2") ::
|
|
("b/Middle.scala" -> "package y.w; trait Mid extends a.Super") ::
|
|
("b/Sub1.scala" -> "package a; class Sub1 extends y.w.Mid") ::
|
|
("b/Sub2.scala" -> "final class Sub2 extends a.Super") ::
|
|
("Sub3.scala" -> "private class F extends a.Super; package c { object Sub3 extends Super2 }") ::
|
|
Nil
|
|
|
|
"Analysis plugin should detect subclasses" in {
|
|
WithFiles(sources.map{case (file, content) => (new File(file), content)} : _*)
|
|
{
|
|
case files @ Seq(supFile, sup2File, midFile, sub1File, sub2File, sub3File) =>
|
|
for(scalaVersion <- TestCompile.allVersions)
|
|
CallbackTest(scalaVersion, files, Seq( "a.Super", "Super2", "x.Super3", "Super4"), Nil ) { (callback, x, xx) =>
|
|
val expected =
|
|
(sub1File, "a.Sub1", "a.Super", false) ::
|
|
(sub2File, "Sub2", "a.Super", false) ::
|
|
(sup2File, "Super2", "Super2", false) ::
|
|
(sub3File, "c.Sub3", "Super2", true) ::
|
|
Nil
|
|
(callback.foundSubclasses) must haveTheSameElementsAs(expected)
|
|
(callback.invalidSuperclasses) must haveTheSameElementsAs(Seq("x.Super3", "Super4"))
|
|
}
|
|
}
|
|
}
|
|
} |