aboutsummaryrefslogtreecommitdiff
path: root/test/test/OtherEntryPointsTest.scala
diff options
context:
space:
mode:
Diffstat (limited to 'test/test/OtherEntryPointsTest.scala')
-rw-r--r--test/test/OtherEntryPointsTest.scala66
1 files changed, 66 insertions, 0 deletions
diff --git a/test/test/OtherEntryPointsTest.scala b/test/test/OtherEntryPointsTest.scala
new file mode 100644
index 000000000..0186b357b
--- /dev/null
+++ b/test/test/OtherEntryPointsTest.scala
@@ -0,0 +1,66 @@
+package test
+
+import org.junit.Test
+import org.junit.Assert._
+import dotty.tools.dotc.Main
+import dotty.tools.dotc.interfaces.{CompilerCallback, SourceFile}
+import dotty.tools.dotc.reporting._
+import dotty.tools.dotc.core.Contexts._
+import java.io.File
+import scala.collection.mutable.ListBuffer
+
+/** Test the compiler entry points that depend on dotty
+ *
+ * This file also serve as an example for using [[dotty.tools.dotc.Driver#process]].
+ *
+ * @see [[InterfaceEntryPointTest]]
+ */
+class OtherEntryPointsTest {
+ @Test def runCompiler = {
+ val sources = List("./tests/pos/HelloWorld.scala")
+ val args = sources ++ List("-d", "./out/")
+
+ val reporter = new CustomReporter
+ val callback = new CustomCompilerCallback
+
+ Main.process(args.toArray, reporter, callback)
+
+ assertEquals("Number of errors", false, reporter.hasErrors)
+ assertEquals("Number of warnings", false, reporter.hasWarnings)
+ assertEquals("Compiled sources", sources, callback.paths)
+ }
+
+ @Test def runCompilerWithContext = {
+ val sources = List("./tests/pos/HelloWorld.scala")
+ val args = sources ++ List("-d", "./out/")
+
+ val reporter = new CustomReporter
+ val callback = new CustomCompilerCallback
+ val context = (new ContextBase).initialCtx.fresh
+ .setReporter(reporter)
+ .setCompilerCallback(callback)
+
+ Main.process(args.toArray, context)
+
+ assertEquals("Number of errors", false, reporter.hasErrors)
+ assertEquals("Number of warnings", false, reporter.hasWarnings)
+ assertEquals("Compiled sources", sources, callback.paths)
+ }
+
+ private class CustomReporter extends Reporter
+ with UniqueMessagePositions
+ with HideNonSensicalMessages {
+ def doReport(d: Diagnostic)(implicit ctx: Context): Unit = {
+ }
+ }
+
+ private class CustomCompilerCallback extends CompilerCallback {
+ private val pathsBuffer = new ListBuffer[String]
+ def paths = pathsBuffer.toList
+
+ override def onSourceCompiled(source: SourceFile): Unit = {
+ if (source.jfile.isPresent)
+ pathsBuffer += source.jfile.get.getPath
+ }
+ }
+}