aboutsummaryrefslogtreecommitdiff
path: root/libraries/eval/test/EvalTest.scala
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/eval/test/EvalTest.scala')
-rw-r--r--libraries/eval/test/EvalTest.scala30
1 files changed, 21 insertions, 9 deletions
diff --git a/libraries/eval/test/EvalTest.scala b/libraries/eval/test/EvalTest.scala
index 32855de..ef5ac6a 100644
--- a/libraries/eval/test/EvalTest.scala
+++ b/libraries/eval/test/EvalTest.scala
@@ -1,7 +1,8 @@
package com.twitter.util
import org.specs.Specification
-import java.io.{File, FileOutputStream}
+import java.io.{File, FileOutputStream, FileWriter}
+import scala.io.Source
import com.twitter.io.TempFile
@@ -32,12 +33,12 @@ object EvalSpec extends Specification {
val res: String = e(sourceFile)
res mustEqual "hello"
val className = e.fileToClassName(sourceFile)
+ val processedSource = e.sourceForString(Source.fromFile(sourceFile).getLines.mkString("\n"))
val fullClassName = "Evaluator__%s_%s.class".format(
- className, e.uniqueId(sourceFile.getCanonicalPath, None))
+ className, e.uniqueId(processedSource, None))
val targetFileName = f.getAbsolutePath() + File.separator + fullClassName
val targetFile = new File(targetFileName)
targetFile.exists must be_==(true)
- val targetMod = targetFile.lastModified
}
"apply(new File(...) with target" in {
@@ -51,8 +52,9 @@ object EvalSpec extends Specification {
// make sure it created a class file with the expected name
val className = e.fileToClassName(sourceFile)
+ val processedSource = e.sourceForString(Source.fromFile(sourceFile).getLines.mkString("\n"))
val fullClassName = "Evaluator__%s_%s.class".format(
- className, e.uniqueId(sourceFile.getCanonicalPath, None))
+ className, e.uniqueId(processedSource, None))
val targetFileName = f.getAbsolutePath() + File.separator + fullClassName
val targetFile = new File(targetFileName)
targetFile.exists must be_==(true)
@@ -60,21 +62,31 @@ object EvalSpec extends Specification {
// eval again, make sure it works
val res2: Int = e(sourceFile)
- // and make sure it didn't create a new file
- f.listFiles.length mustEqual 1
+ // and make sure it didn't create a new file (1 + checksum)
+ f.listFiles.length mustEqual 2
// and make sure it didn't update the file
val targetFile2 = new File(targetFileName)
targetFile2.lastModified mustEqual targetMod
- // touch source, ensure recompile
+ // touch source, ensure no-recompile (checksum hasn't changed)
sourceFile.setLastModified(System.currentTimeMillis())
val res3: Int = e(sourceFile)
res3 mustEqual 2
// and make sure it didn't create a different file
- f.listFiles.length mustEqual 1
+ f.listFiles.length mustEqual 2
// and make sure it updated the file
val targetFile3 = new File(targetFileName)
- targetFile3.lastModified must be_>=(targetMod)
+ targetFile3.lastModified mustEqual targetMod
+
+ // append a newline, altering checksum, verify recompile
+ val writer = new FileWriter(sourceFile)
+ writer.write("//a comment\n2\n")
+ writer.close
+ val res4: Int = e(sourceFile)
+ res4 mustEqual 2
+ // and make sure it created a new file
+ val targetFile4 = new File(targetFileName)
+ targetFile4.exists must beFalse
}
"apply(InputStream)" in {