blob: fea2fe33e368247703c15680ce7606c81eaf4341 (
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
import org.scalacheck._
import scala.tools.nsc.doc
import scala.tools.nsc.doc.html.page.Index
import java.net.URLClassLoader
object Test extends Properties("Index") {
def getClasspath = {
// these things can be tricky
// this test previously relied on the assumption that the current thread's classloader is an url classloader and contains all the classpaths
// does partest actually guarantee this? to quote Leonard Nimoy: The answer, of course, is no.
// this test _will_ fail again some time in the future.
val paths = Thread.currentThread.getContextClassLoader.asInstanceOf[URLClassLoader].getURLs.map(_.getPath)
val morepaths = Thread.currentThread.getContextClassLoader.getParent.asInstanceOf[URLClassLoader].getURLs.map(_.getPath)
(paths ++ morepaths).mkString(java.io.File.pathSeparator)
}
val docFactory = {
val settings = new doc.Settings((s: String) => {
Console.err.println(s)
})
settings.classpath.value = getClasspath
println(settings.classpath.value)
val reporter = new scala.tools.nsc.reporters.ConsoleReporter(settings)
new doc.DocFactory(reporter, settings)
}
val indexModelFactory = {
val settings = new doc.Settings((s: String) => {
Console.err.println(s)
})
settings.classpath.value = getClasspath
val reporter = new scala.tools.nsc.reporters.ConsoleReporter(settings)
new doc.model.IndexModelFactory
}
def createIndex(path: String): Option[Index] = {
val maybeModel = {
//val stream = new java.io.ByteArrayOutputStream
//val original = Console.out
//Console.setOut(stream)
val result = docFactory.universe(List(path))
// assert(stream.toString == "model contains 2 documentable templates\n")
//Console.setOut(original)
result
}
maybeModel match {
case Some(model) => {
val index = new Index(model, indexModelFactory.makeModel(model))
return Some(index)
}
case _ => return None
}
}
property("path") = {
createIndex("src/compiler/scala/tools/nsc/doc/html/page/Index.scala") match {
case Some(index) =>
index.path == List("index.html")
case None => false
}
}
property("title") = {
createIndex("src/compiler/scala/tools/nsc/doc/html/page/Index.scala") match {
case Some(index) =>
index.title == ""
case None => false
}
}
property("browser contants a script element") = {
createIndex("src/compiler/scala/tools/nsc/doc/html/page/Index.scala") match {
case Some(index) =>
(index.browser \ "script").size == 1
case None => false
}
}
property("allPackages") = {
createIndex("src/compiler/scala/tools/nsc/doc/html/page/Index.scala") match {
case Some(index) => {
index.allPackages.map(_.toString) == List(
"scala",
"scala.tools",
"scala.tools.nsc",
"scala.tools.nsc.doc",
"scala.tools.nsc.doc.html",
"scala.tools.nsc.doc.html.page"
)
}
case None => false
}
}
}
|