diff options
Diffstat (limited to 'main/test/src/main/JavaCompileJarTests.scala')
-rw-r--r-- | main/test/src/main/JavaCompileJarTests.scala | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/main/test/src/main/JavaCompileJarTests.scala b/main/test/src/main/JavaCompileJarTests.scala new file mode 100644 index 00000000..37c64b05 --- /dev/null +++ b/main/test/src/main/JavaCompileJarTests.scala @@ -0,0 +1,67 @@ +package mill.main + +import mill.util.ScriptTestSuite +import utest._ + +object JavaCompileJarTests extends ScriptTestSuite(fork = false) { + def workspaceSlug = "java-compile-jar" + def scriptSourcePath = os.pwd / 'main / 'test / 'resources / 'examples / 'javac + val tests = Tests{ + initWorkspace() + 'test - { + if (!ammonite.util.Util.java9OrAbove) { + // Basic target evaluation works + assert(eval("classFiles")) + assert(eval("jar")) + + val classFiles1 = meta("classFiles") + val jar1 = meta("jar") + + assert(eval("classFiles")) + assert(eval("jar")) + + // Repeated evaluation has the same results + val classFiles2 = meta("classFiles") + val jar2 = meta("jar") + + assert( + jar1 == jar2, + classFiles1 == classFiles2 + ) + + // If we update resources, classFiles are unchanged but jar changes + for(scalaFile <- os.walk(workspacePath).filter(_.ext == "txt")){ + os.write.append(scalaFile, "\n") + } + + assert(eval("classFiles")) + assert(eval("jar")) + + val classFiles3 = meta("classFiles") + val jar3 = meta("jar") + + assert( + jar2 != jar3, + classFiles2 == classFiles3 + ) + + // We can intentionally break the code, have the targets break, then + // fix the code and have them recover. + for(scalaFile <- os.walk(workspacePath).filter(_.ext == "java")){ + os.write.append(scalaFile, "\n}") + } + + assert(!eval("classFiles")) + assert(!eval("jar")) + + for(scalaFile <- os.walk(workspacePath).filter(_.ext == "java")){ + os.write.over(scalaFile, os.read(scalaFile).dropRight(2)) + } + + assert(eval("classFiles")) + assert(eval("jar")) + } + } + } +} + |