aboutsummaryrefslogtreecommitdiff
path: root/compiler/test/dotty/tools/vulpix/ChildMain.scala
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/test/dotty/tools/vulpix/ChildMain.scala')
-rw-r--r--compiler/test/dotty/tools/vulpix/ChildMain.scala82
1 files changed, 0 insertions, 82 deletions
diff --git a/compiler/test/dotty/tools/vulpix/ChildMain.scala b/compiler/test/dotty/tools/vulpix/ChildMain.scala
deleted file mode 100644
index 30059a9c5..000000000
--- a/compiler/test/dotty/tools/vulpix/ChildMain.scala
+++ /dev/null
@@ -1,82 +0,0 @@
-package dotty.tools.vulpix
-
-import java.io.{
- File => JFile,
- InputStream, ObjectInputStream,
- OutputStream, ObjectOutputStream,
- ByteArrayOutputStream, PrintStream
-}
-import java.lang.reflect.InvocationTargetException
-
-import dotty.tools.vulpix.Statuses._
-
-object ChildMain {
- val realStdin = System.in
- val realStderr = System.err
- val realStdout = System.out
-
- private def runMain(dir: JFile): Status = {
- def renderStackTrace(ex: Throwable): String =
- ex.getStackTrace
- .takeWhile(_.getMethodName != "invoke0")
- .mkString(" ", "\n ", "")
-
- def resetOutDescriptors(): Unit = {
- System.setOut(realStdout)
- System.setErr(realStderr)
- }
-
- import java.net.{ URL, URLClassLoader }
-
- val printStream = new ByteArrayOutputStream
-
- try {
- // Do classloading magic and running here:
- val ucl = new URLClassLoader(Array(dir.toURI.toURL))
- val cls = ucl.loadClass("Test")
- val meth = cls.getMethod("main", classOf[Array[String]])
-
- try {
- val ps = new PrintStream(printStream)
- System.setOut(ps)
- System.setErr(ps)
- Console.withOut(printStream) {
- Console.withErr(printStream) {
- // invoke main with "jvm" as arg
- meth.invoke(null, Array("jvm"))
- }
- }
- resetOutDescriptors()
- } catch {
- case t: Throwable =>
- resetOutDescriptors()
- throw t
- }
- new Success(printStream.toString("utf-8"))
- }
- catch {
- case ex: NoSuchMethodException =>
- val msg = s"test in '$dir' did not contain method: ${ex.getMessage}"
- new Failure(msg, renderStackTrace(ex.getCause))
-
- case ex: ClassNotFoundException =>
- val msg = s"test in '$dir' did not contain class: ${ex.getMessage}"
- new Failure(msg, renderStackTrace(ex.getCause))
-
- case ex: InvocationTargetException =>
- val msg = s"An exception ocurred when running main: ${ex.getCause}"
- new Failure(msg, renderStackTrace(ex.getCause))
- }
- }
-
- def main(args: Array[String]): Unit = {
- val stdin = new ObjectInputStream(System.in);
- val stdout = new ObjectOutputStream(System.out);
-
- while (true) {
- val dir = stdin.readObject().asInstanceOf[JFile]
- stdout.writeObject(runMain(dir))
- stdout.flush()
- }
- }
-}