-
Notifications
You must be signed in to change notification settings - Fork 1
/
IsRunnableTest.scala
41 lines (37 loc) · 1.2 KB
/
IsRunnableTest.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package org.scalatest.basics
import org.junit.runner.RunWith
import org.scalatest.WrapWith
import org.scalatest.specs2.output.ReportingOutputUnitSpecTest
import org.scalatest.specs2.Specs2Runner
import org.specs2.mutable.Specification
import org.specs2.runner.JUnitRunner
// Test subject
class SomeOtherSimpleSpec extends Specification {
"The ScalaTest API" should {
"have the Runner.doRunRunRunDaDoRunRun() because it's funny" in {
success
}
}
}
@RunWith(classOf[JUnitRunner])
@WrapWith(classOf[Specs2Runner])
class IsRunnableTest extends Specification {
def isRunnable(clazz: java.lang.Class[_]): Boolean = {
val wrapWithAnnotation = clazz.getAnnotation(classOf[WrapWith])
if (wrapWithAnnotation != null) {
val wrapperSuiteClazz = wrapWithAnnotation.value
val constructorList = wrapperSuiteClazz.getDeclaredConstructors()
constructorList.exists { c =>
val types = c.getParameterTypes
types.length == 1 && types(0) == classOf[java.lang.Class[_]]
}
} else {
return false
}
}
"If running Specs2 through ScalaTest package discovery" should {
"Find ROUST" in {
isRunnable(classOf[ReportingOutputUnitSpecTest]) must beTrue
}
}
}