Optimize compilation

This commit is contained in:
Timo Westkämper 2015-03-12 23:06:31 +02:00
parent 0b952defab
commit d23a7ce3ea
2 changed files with 13 additions and 23 deletions

View File

@ -2,6 +2,9 @@ package com.querydsl.scala
import java.io.File._
import com.google.common.base.Charsets
import com.google.common.io.Files
import scala.tools.nsc._
import scala.tools.nsc.interpreter.IR.Success
import scala.io.Source.fromFile
@ -16,12 +19,14 @@ object CompileTestUtils {
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
private val env = new Settings()
env.classpath.value = cp.mkString(pathSeparator)
env.usejavacp.value = true
env.d.value = "target"
//env.d.value = "target"
env.stopAfter.value = List("refchecks")
def assertCompileSuccess(file: File): Unit = {
assertCompileSuccess(recursiveFileList(file))
@ -38,18 +43,12 @@ object CompileTestUtils {
}
def assertCompileSuccess(source: String): Unit = {
val out = new java.io.ByteArrayOutputStream
val interpreterWriter = new java.io.PrintWriter(out)
val interpreter = new scala.tools.nsc.interpreter.IMain(env, interpreterWriter)
val file = File.createTempFile("source", ".scala")
try {
val result = interpreter.interpret(source.replaceAll("package [\\w\\.]+", ""))
if (result != Success) {
throw new AssertionError("Compile failed, interpreter output:\n" + out.toString("utf-8"))
}
Files.write(source, file, Charsets.UTF_8)
assertCompileSuccess(file)
} finally {
interpreterWriter.close()
interpreter.close()
file.delete()
}
}

View File

@ -17,17 +17,8 @@ class GenericExporterTest {
exporter.setCreateScalaSources(true)
exporter.export(getClass.getPackage)
val targetFolder = new File("target/gen1/com/querydsl/scala/")
// com.querydsl.scala
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"))
map (fromFile(_).mkString)
mkString ("\n"))
CompileTestUtils.assertCompileSuccess("import com.querydsl.scala.ext._\n" + other)
val targetFolder = new File("target/gen1")
CompileTestUtils.assertCompileSuccess(targetFolder)
}
}