Skip to content

Commit 601e9f6

Browse files
Fix default scaladoc config, so that id doesn't break all scaladoc links (#3041)
* Fix default scaladoc config, so that id doesn't break all scaladoc links Right now running the doc command with default arguments in scala-cli always produced broken scaladoc links, because the default regex for external mappings mapped every tasty file that contained 'scala' to use the `scala-lang.org` mapping. And since scala-cli uses '.scala-build' directory for placing tasty files, almost all links were broken. * Add an integration test to check if scaladoc correctly links local members to local links
1 parent 9a05eae commit 601e9f6

File tree

4 files changed

+18
-4
lines changed

4 files changed

+18
-4
lines changed

build.sc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ object `scala-cli-bsp` extends JavaModule with ScalaCliPublishModule {
116116
object integration extends CliIntegration {
117117
object test extends IntegrationScalaTests {
118118
def ivyDeps = super.ivyDeps() ++ Seq(
119-
Deps.jgit
119+
Deps.jgit,
120+
Deps.jsoup
120121
)
121122
}
122123
object docker extends CliIntegrationDocker {

modules/cli/src/main/scala/scala/cli/commands/doc/Doc.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ object Doc extends ScalaCommand[DocOptions] {
125125
"-snippet-compiler:compile",
126126
"-Ygenerate-inkuire",
127127
"-external-mappings:" +
128-
".*scala.*::scaladoc3::https://scala-lang.org/api/3.x/," +
129-
".*java.*::javadoc::https://docs.oracle.com/javase/8/docs/api/",
128+
".*/scala/.*::scaladoc3::https://scala-lang.org/api/3.x/," +
129+
".*/java/.*::javadoc::https://docs.oracle.com/javase/8/docs/api/",
130130
"-author",
131131
"-groups"
132132
)

modules/integration/src/test/scala/scala/cli/integration/DocTestDefinitions.scala

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package scala.cli.integration
22

33
import com.eed3si9n.expecty.Expecty.expect
4+
import org.jsoup._
5+
6+
import scala.jdk.CollectionConverters._
47

58
abstract class DocTestDefinitions extends ScalaCliSuite with TestScalaVersionArgs {
69
_: TestScalaVersion =>
@@ -55,8 +58,16 @@ abstract class DocTestDefinitions extends ScalaCliSuite with TestScalaVersionArg
5558
"lib/Messages$.html"
5659
)
5760
val entries =
58-
os.walk(root / dest).map(_.relativeTo(expectedDestDocPath)).map(_.toString()).toList
61+
os.walk(root / dest).filter(!os.isDir(_)).map { path =>
62+
path.relativeTo(expectedDestDocPath).toString() -> os.read(path)
63+
}.toMap
5964
expect(expectedEntries.forall(e => entries.contains(e)))
65+
66+
val documentableNameElement =
67+
Jsoup.parse(entries("index.html")).select(".documentableName").asScala
68+
documentableNameElement.filter(_.text().contains("lib")).foreach { element =>
69+
expect(!element.attr("href").startsWith("http"))
70+
}
6071
}
6172
}
6273
}

project/deps.sc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ object Deps {
9797
def coursierM1Cli = coursierDefault
9898
def jsoniterScala = "2.23.2"
9999
def jsoniterScalaJava8 = "2.13.5.2"
100+
def jsoup = "1.18.1"
100101
def scalaMeta = "4.9.8"
101102
def scalaNative04 = "0.4.17"
102103
def scalaNative05 = "0.5.4"
@@ -156,6 +157,7 @@ object Deps {
156157
ivy"com.github.plokhotnyuk.jsoniter-scala::jsoniter-scala-macros:${Versions.jsoniterScalaJava8}"
157158
def jsoniterMacrosJava8 =
158159
ivy"com.github.plokhotnyuk.jsoniter-scala::jsoniter-scala-macros:${Versions.jsoniterScalaJava8}"
160+
def jsoup = ivy"org.jsoup:jsoup:${Versions.jsoup}"
159161
def libsodiumjni = ivy"org.virtuslab.scala-cli:libsodiumjni:0.0.4"
160162
def macroParadise = ivy"org.scalamacros:::paradise:2.1.1"
161163
def metaconfigTypesafe =

0 commit comments

Comments
 (0)