aboutsummaryrefslogtreecommitdiff
path: root/test/dotty/tools/dotc/EntryPointsTest.scala
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-11-01 18:34:29 +0100
committerGuillaume Martres <smarter@ubuntu.com>2016-11-22 01:35:07 +0100
commit6a455fe6da5ff9c741d91279a2dc6fe2fb1b472f (patch)
treefe7729ddb03a84728687d5a3068f520b0bc1c297 /test/dotty/tools/dotc/EntryPointsTest.scala
parentb3855424280a821601f126b6b4c6a731b72540ea (diff)
downloaddotty-6a455fe6da5ff9c741d91279a2dc6fe2fb1b472f.tar.gz
dotty-6a455fe6da5ff9c741d91279a2dc6fe2fb1b472f.tar.bz2
dotty-6a455fe6da5ff9c741d91279a2dc6fe2fb1b472f.zip
Move (most) unit tests to correct locations
Should still perhaps move `test/dotc/tests.scala` and the others in the same directory to a better more cohesive location. Would like to delete the worksheets as well - but maybe they hold sentimental value...
Diffstat (limited to 'test/dotty/tools/dotc/EntryPointsTest.scala')
-rw-r--r--test/dotty/tools/dotc/EntryPointsTest.scala72
1 files changed, 72 insertions, 0 deletions
diff --git a/test/dotty/tools/dotc/EntryPointsTest.scala b/test/dotty/tools/dotc/EntryPointsTest.scala
new file mode 100644
index 000000000..4673ffd3c
--- /dev/null
+++ b/test/dotty/tools/dotc/EntryPointsTest.scala
@@ -0,0 +1,72 @@
+package dotty.tools
+package dotc
+
+import org.junit.Test
+import org.junit.Assert._
+import dotty.tools.dotc.interfaces.{CompilerCallback, SourceFile}
+import reporting._
+import reporting.diagnostic.MessageContainer
+import 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 EntryPointsTest {
+ private val sources =
+ List("./tests/pos/HelloWorld.scala").map(p => new java.io.File(p).getPath())
+ private val dottyInterfaces =
+ new java.io.File("./interfaces/dotty-interfaces-0.1-SNAPSHOT.jar").getPath
+ private val dottyLibrary =
+ new java.io.File("./library/target/scala-2.11/dotty-library_2.11-0.1-SNAPSHOT.jar").getPath
+ private val args =
+ sources ++
+ List("-d", "./out/") ++
+ List("-classpath", dottyInterfaces + ":" + dottyLibrary)
+
+ @Test def runCompiler = {
+ 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 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(m: MessageContainer)(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
+ }
+ }
+}