blob: d1d557b9d3d22d45ae22306048abdc0036b70fc1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
/* __ *\
** ________ ___ / / ___ Scala Ant Tasks **
** / __/ __// _ | / / / _ | (c) 2005-2011, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
package scala.tools.ant
import org.apache.tools.ant.Project
import org.apache.tools.ant.types.{Path, Reference}
import scala.collection.JavaConverters._
import scala.tools.util.VerifyClass
class ClassloadVerify extends ScalaMatchingTask {
/** The class path to use for this compilation. */
protected var classpath: Option[Path] = None
/** Sets the `classpath` attribute. Used by [[http://ant.apache.org Ant]].
* @param input The value of `classpath`. */
def setClasspath(input: Path) {
classpath = Some(input)
}
def setClasspathref(input: Reference) {
val p = new Path(getProject())
p.setRefid(input)
classpath = Some(p)
}
private def getClasspath: Array[String] = classpath match {
case None => buildError("Member 'classpath' is empty.")
case Some(x) => x.list.toArray
}
override def execute(): Unit = {
val results = VerifyClass.run(getClasspath).asScala
results foreach (r => log("Checking: " + r, Project.MSG_DEBUG))
val errors = for((name, error) <- results; if error != null) yield (name,error)
if(errors.isEmpty) {
// TODO - Log success
log("Classload verification succeeded with " + results.size + " classes.", Project.MSG_INFO)
} else {
for((name, error) <- errors) {
log(name + " failed verification with: " + error, Project.MSG_ERR)
}
buildError(errors.size + " classload verification errors on " + results.size + " classes.")
}
}
}
|