diff options
Diffstat (limited to 'test/test/OtherEntryPointsTest.scala')
-rw-r--r-- | test/test/OtherEntryPointsTest.scala | 66 |
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 + } + } +} |