Use Global for Scala compilation

This commit is contained in:
Timo Westkämper 2015-03-09 22:23:01 +02:00
parent 97882965ac
commit 3a68a8a0d3
5 changed files with 23 additions and 36 deletions

View File

@ -8,41 +8,35 @@ import scala.io.Source.fromFile
import java.io.File
import java.io.File.pathSeparator
import scala.tools.nsc.reporters.{ConsoleReporter, Reporter}
object CompileTestUtils {
private object env extends Settings {
private def jarPathOfClass(className: String) = {
Class.forName(className).getProtectionDomain.getCodeSource.getLocation
}
val currentLibraries = this.getClass.getClassLoader.asInstanceOf[java.net.URLClassLoader].getURLs.toList
val cp = jarPathOfClass("scala.tools.nsc.Interpreter") :: jarPathOfClass("scala.ScalaObject") :: currentLibraries
classpath.value = cp.mkString(pathSeparator)
usejavacp.value = true
private def jarPathOfClass(className: String) = {
Class.forName(className).getProtectionDomain.getCodeSource.getLocation
}
private val env = new Settings()
private val currentLibraries = this.getClass.getClassLoader.asInstanceOf[java.net.URLClassLoader].getURLs.toList
private val cp = jarPathOfClass("scala.tools.nsc.Interpreter") :: jarPathOfClass("scala.ScalaObject") :: currentLibraries
env.classpath.value = cp.mkString(pathSeparator)
env.usejavacp.value = true
env.d.value = "target"
def assertCompileSuccess(file: File): Unit = {
assertCompileSuccess(recursiveFileList(file))
}
def assertCompileSuccess(files: Traversable[File]): Unit = {
for (file <- files) {
assertCompileSuccess(fromFile(file).mkString)
val reporter = new ConsoleReporter(env)
val g = new Global(env, reporter)
val run = new g.Run
run.compile(files.map(_.getPath).toList)
if (reporter.hasErrors) {
throw new AssertionError("Compilation failed")
}
}
def assertCompileSuccessCombined(file: File): Unit = {
assertCompileSuccessCombined(recursiveFileList(file))
}
def assertCompileSuccessCombined(files: Traversable[File]): Unit = {
assertCompileSuccess(files
map (fromFile(_).mkString)
mkString ("\n"))
}
def assertCompileSuccess(source: String): Unit = {
val out = new java.io.ByteArrayOutputStream
val interpreterWriter = new java.io.PrintWriter(out)

View File

@ -22,10 +22,7 @@ class GenericExporterJPATest {
exporter.export(getClass.getPackage)
val targetFolder = new java.io.File("target/gen1-jpa/com/querydsl/scala/")
val sources = (targetFolder listFiles ()
filter (_.getName.endsWith(".scala"))
map (fromFile(_).mkString)
mkString ("\n"))
val sources = targetFolder.listFiles.filter(_.getName.endsWith(".scala"))
CompileTestUtils.assertCompileSuccess(sources)
}

View File

@ -20,15 +20,11 @@ class GenericExporterTest {
val targetFolder = new File("target/gen1/com/querydsl/scala/")
// com.querydsl.scala
val sources = (targetFolder.listFiles()
filter (_.getName.endsWith(".scala"))
map (fromFile(_).mkString)
mkString ("\n"))
val sources = targetFolder.listFiles.filter(_.getName.endsWith(".scala"))
CompileTestUtils.assertCompileSuccess(sources)
// com.querydsl.scala.ext
val other = (new File(targetFolder, "ext").listFiles()
filter (_.getName.endsWith(".scala"))
val other = (new File(targetFolder, "ext").listFiles() filter (_.getName.endsWith(".scala"))
map (fromFile(_).mkString)
mkString ("\n"))
CompileTestUtils.assertCompileSuccess("import com.querydsl.scala.ext._\n" + other)

View File

@ -101,7 +101,7 @@ class JDBCIntegrationTest extends SQLHelpers {
exporter.setSchemaPattern("PUBLIC")
exporter.export(connection.getMetaData)
CompileTestUtils.assertCompileSuccessCombined(directory)
CompileTestUtils.assertCompileSuccess(directory)
}
@Test

View File

@ -97,7 +97,7 @@ class MetaDataExporterTest {
exporter.setTypeMappings(ScalaTypeMappings.create)
exporter.export(connection.getMetaData)
CompileTestUtils.assertCompileSuccessCombined(directory)
CompileTestUtils.assertCompileSuccess(directory)
}
@Test
@ -136,7 +136,7 @@ class MetaDataExporterTest {
exporter.setTypeMappings(ScalaTypeMappings.create)
exporter.export(connection.getMetaData)
CompileTestUtils.assertCompileSuccessCombined(directory)
CompileTestUtils.assertCompileSuccess(directory)
}
}