summaryrefslogtreecommitdiff
path: root/core/src/test/scala/forge/JavaCompileJarTests.scala
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-11-05 17:34:36 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2017-11-05 17:34:36 -0800
commit7a6c80301fa5f405f1d9ffca2776b19cf9a29b9a (patch)
tree2f3f4375097756bded9dfbe8bd546b448b2cd394 /core/src/test/scala/forge/JavaCompileJarTests.scala
parent011e8ef1059196a373a0eee32c58dfdaee3493f2 (diff)
downloadmill-7a6c80301fa5f405f1d9ffca2776b19cf9a29b9a.tar.gz
mill-7a6c80301fa5f405f1d9ffca2776b19cf9a29b9a.tar.bz2
mill-7a6c80301fa5f405f1d9ffca2776b19cf9a29b9a.zip
Break out reusable JVM specific stuff into its own file
Diffstat (limited to 'core/src/test/scala/forge/JavaCompileJarTests.scala')
-rw-r--r--core/src/test/scala/forge/JavaCompileJarTests.scala55
1 files changed, 2 insertions, 53 deletions
diff --git a/core/src/test/scala/forge/JavaCompileJarTests.scala b/core/src/test/scala/forge/JavaCompileJarTests.scala
index 33383a95..6ce02149 100644
--- a/core/src/test/scala/forge/JavaCompileJarTests.scala
+++ b/core/src/test/scala/forge/JavaCompileJarTests.scala
@@ -1,13 +1,12 @@
package forge
-import java.io.FileOutputStream
-import java.util.jar.{JarEntry, JarOutputStream}
import ammonite.ops._
import forge.define.Target
import forge.discover.Discovered
import forge.eval.{Evaluator, PathRef}
-import forge.util.{Args, OSet}
+import forge.modules.Jvm.jarUp
+import forge.util.OSet
import utest._
object JavaCompileJarTests extends TestSuite{
@@ -22,56 +21,6 @@ object JavaCompileJarTests extends TestSuite{
}
- private def createManifest(mainClass: Option[String]) = {
- val m = new java.util.jar.Manifest()
- m.getMainAttributes.put(java.util.jar.Attributes.Name.MANIFEST_VERSION, "1.0")
- m.getMainAttributes.putValue( "Created-By", "Scala Forge" )
- mainClass.foreach(
- m.getMainAttributes.put(java.util.jar.Attributes.Name.MAIN_CLASS, _)
- )
- m
- }
-
- def createJar(outputPath: Path, inputPaths: Seq[Path], mainClass: Option[String] = None ): Option[Path] = {
- rm(outputPath)
- if(inputPaths.isEmpty) None
- else {
- mkdir(outputPath/up)
-
- val jar = new JarOutputStream(
- new FileOutputStream(outputPath.toIO),
- createManifest(mainClass)
- )
-
- try{
- assert(inputPaths.forall(exists(_)))
- for{
- p <- inputPaths
- (file, mapping) <-
- if (p.isFile) Iterator(p -> empty/p.last)
- else ls.rec(p).filter(_.isFile).map(sub => sub -> sub.relativeTo(p))
- } {
- val entry = new JarEntry(mapping.toString)
- entry.setTime(file.mtime.toMillis)
- jar.putNextEntry(entry)
- jar.write(read.bytes(file))
- jar.closeEntry
- }
- } finally {
- jar.close
- }
-
- Some(outputPath)
- }
- }
- case class jarUp(roots: Target[PathRef]*) extends Target[PathRef]{
-
- val inputs = roots
- def evaluate(args: Args): PathRef = {
- createJar(args.dest, args.args.map(_.asInstanceOf[PathRef].path))
- PathRef(args.dest)
- }
- }
val tests = Tests{
'javac {