diff options
Diffstat (limited to 'src/partest')
-rw-r--r-- | src/partest/scala/tools/partest/JavapTest.scala | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/partest/scala/tools/partest/JavapTest.scala b/src/partest/scala/tools/partest/JavapTest.scala new file mode 100644 index 0000000000..3cb3dc6ca8 --- /dev/null +++ b/src/partest/scala/tools/partest/JavapTest.scala @@ -0,0 +1,26 @@ + +package scala.tools.partest + +import scala.util.{Try,Success,Failure} +import java.lang.System.{out => sysout} + +/** A trait for testing repl's javap command + * or possibly examining its output. + */ +abstract class JavapTest extends ReplTest { + + /** Your Assertion Here, whatever you want to bejahen. + * Assertions must be satisfied by all flavors of javap + * and should not be fragile with respect to compiler output. + */ + def yah(res: Seq[String]): Boolean + + def baddies = List(":javap unavailable", ":javap not yet working") + + // give it a pass if javap is broken + override def show() = try { + val res = eval().toSeq + val unsupported = res exists (s => baddies exists (s contains _)) + assert ((unsupported || yah(res)), res.mkString("","\n","\n")) + } catch { case ae: AssertionError => ae.printStackTrace(sysout) } +} |