From fe224d6c9cdd6e3a255edbbd21608415d6081111 Mon Sep 17 00:00:00 2001 From: solonovamax Date: Wed, 16 Oct 2024 00:49:03 -0400 Subject: [PATCH 1/3] Add failing test for #3863 tbh this test isn't exactly the *cleanest*, but whatever. Signed-off-by: solonovamax --- .../builders/DokkaSourceSetBuilderTest.kt | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/dokka-runners/dokka-gradle-plugin/src/test/kotlin/engine/parameters/builders/DokkaSourceSetBuilderTest.kt b/dokka-runners/dokka-gradle-plugin/src/test/kotlin/engine/parameters/builders/DokkaSourceSetBuilderTest.kt index d1fe42f94d..aabe813cc5 100644 --- a/dokka-runners/dokka-gradle-plugin/src/test/kotlin/engine/parameters/builders/DokkaSourceSetBuilderTest.kt +++ b/dokka-runners/dokka-gradle-plugin/src/test/kotlin/engine/parameters/builders/DokkaSourceSetBuilderTest.kt @@ -8,6 +8,7 @@ import io.kotest.core.spec.style.FunSpec import io.kotest.engine.spec.tempdir import io.kotest.inspectors.shouldForAll import io.kotest.matchers.collections.shouldBeSingleton +import io.kotest.matchers.collections.shouldContainExactlyInAnyOrder import io.kotest.matchers.equals.shouldNotBeEqual import io.kotest.matchers.shouldBe import io.kotest.matchers.string.shouldContain @@ -25,6 +26,54 @@ import java.net.URI class DokkaSourceSetBuilderTest : FunSpec({ + context("when building a DokkaSourceSetSpec") { + val project = createProject() + test("resolve classpath, includes, samples, sourceRoots, and suppressedFiles recursively") { + fun File.ensureDirExists() = also { it.mkdirs() } + fun File.subdirWithFile() = resolve("subdir").also { it.mkdirs() }.resolve("test-file") + fun File.createFile() = also { it.createNewFile() } + + val tempDir = tempdir() + + val classpathDir = tempDir.resolve("classpath").ensureDirExists() + val classpathFile = classpathDir.resolve("test-file").createFile() + val classpathSubFile = classpathDir.subdirWithFile().createFile() + + val includesDir = tempDir.resolve("includes").ensureDirExists() + val includesFile = includesDir.resolve("test-file").createFile() + val includesSubFile = includesDir.subdirWithFile().createFile() + + val samplesDir = tempDir.resolve("samples").ensureDirExists() + val samplesFile = samplesDir.resolve("test-file").createFile() + val samplesSubFile = samplesDir.subdirWithFile().createFile() + + val rootsDir = tempDir.resolve("roots").ensureDirExists() + val rootsFile = rootsDir.resolve("test-file").createFile() + val rootsSubFile = rootsDir.subdirWithFile().createFile() + + val suppressedDir = tempDir.resolve("suppressed").ensureDirExists() + val suppressedFile = suppressedDir.resolve("test-file").createFile() + val suppressedSubFile = suppressedDir.subdirWithFile().createFile() + + + val sourceSetSpec = project.createDokkaSourceSetSpec("testRemoteLineSuffixOptional") { + classpath.from(classpathDir) + includes.from(includesDir) + samples.from(samplesDir) + sourceRoots.from(rootsDir) + suppressedFiles.from(suppressedDir) + } + + val sourceSet = DokkaSourceSetBuilder.buildAll(setOf(sourceSetSpec)).single() + + sourceSet.classpath shouldContainExactlyInAnyOrder listOf(classpathFile, classpathSubFile) + sourceSet.includes shouldContainExactlyInAnyOrder listOf(includesFile, includesSubFile) + sourceSet.samples shouldContainExactlyInAnyOrder listOf(samplesFile, samplesSubFile) + sourceSet.sourceRoots shouldContainExactlyInAnyOrder listOf(rootsFile, rootsSubFile) + sourceSet.suppressedFiles shouldContainExactlyInAnyOrder listOf(suppressedFile, suppressedSubFile) + } + } + context("when building a ExternalDocumentationLinkSpec") { val project = createProject() From 199d2a7eea05bcc55614e4cfeb73f15ec5872eea Mon Sep 17 00:00:00 2001 From: solonovamax Date: Wed, 16 Oct 2024 00:51:00 -0400 Subject: [PATCH 2/3] Fix #3863 Recursively resolve directories using `.asFileTree.files` instead of `.files` Signed-off-by: solonovamax --- .../parameters/builders/DokkaSourceSetBuilder.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/engine/parameters/builders/DokkaSourceSetBuilder.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/engine/parameters/builders/DokkaSourceSetBuilder.kt index 4b397d1038..adb3e1615f 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/engine/parameters/builders/DokkaSourceSetBuilder.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/engine/parameters/builders/DokkaSourceSetBuilder.kt @@ -73,11 +73,11 @@ internal object DokkaSourceSetBuilder { sourceSetID = build(spec.sourceSetId.get()), // files - classpath = spec.classpath.files.toList(), - includes = spec.includes.files, - samples = spec.samples.files, - sourceRoots = spec.sourceRoots.files, - suppressedFiles = spec.suppressedFiles.files, + classpath = spec.classpath.asFileTree.files.toList(), + includes = spec.includes.asFileTree.files, + samples = spec.samples.asFileTree.files, + sourceRoots = spec.sourceRoots.asFileTree.files, + suppressedFiles = spec.suppressedFiles.asFileTree.files, ) } From 5f9bb1303eaff41174a6a6a2f1a6ef484eb35b75 Mon Sep 17 00:00:00 2001 From: solonovamax Date: Wed, 16 Oct 2024 01:03:17 -0400 Subject: [PATCH 3/3] sourcesRoots should not be resolved recursively Signed-off-by: solonovamax --- .../engine/parameters/builders/DokkaSourceSetBuilder.kt | 2 +- .../engine/parameters/builders/DokkaSourceSetBuilderTest.kt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/engine/parameters/builders/DokkaSourceSetBuilder.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/engine/parameters/builders/DokkaSourceSetBuilder.kt index adb3e1615f..0d8624220f 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/engine/parameters/builders/DokkaSourceSetBuilder.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/engine/parameters/builders/DokkaSourceSetBuilder.kt @@ -76,7 +76,7 @@ internal object DokkaSourceSetBuilder { classpath = spec.classpath.asFileTree.files.toList(), includes = spec.includes.asFileTree.files, samples = spec.samples.asFileTree.files, - sourceRoots = spec.sourceRoots.asFileTree.files, + sourceRoots = spec.sourceRoots.files, suppressedFiles = spec.suppressedFiles.asFileTree.files, ) } diff --git a/dokka-runners/dokka-gradle-plugin/src/test/kotlin/engine/parameters/builders/DokkaSourceSetBuilderTest.kt b/dokka-runners/dokka-gradle-plugin/src/test/kotlin/engine/parameters/builders/DokkaSourceSetBuilderTest.kt index aabe813cc5..e468ef6e42 100644 --- a/dokka-runners/dokka-gradle-plugin/src/test/kotlin/engine/parameters/builders/DokkaSourceSetBuilderTest.kt +++ b/dokka-runners/dokka-gradle-plugin/src/test/kotlin/engine/parameters/builders/DokkaSourceSetBuilderTest.kt @@ -48,8 +48,8 @@ class DokkaSourceSetBuilderTest : FunSpec({ val samplesSubFile = samplesDir.subdirWithFile().createFile() val rootsDir = tempDir.resolve("roots").ensureDirExists() - val rootsFile = rootsDir.resolve("test-file").createFile() - val rootsSubFile = rootsDir.subdirWithFile().createFile() + rootsDir.resolve("test-file").createFile() + rootsDir.subdirWithFile().createFile() val suppressedDir = tempDir.resolve("suppressed").ensureDirExists() val suppressedFile = suppressedDir.resolve("test-file").createFile() @@ -69,7 +69,7 @@ class DokkaSourceSetBuilderTest : FunSpec({ sourceSet.classpath shouldContainExactlyInAnyOrder listOf(classpathFile, classpathSubFile) sourceSet.includes shouldContainExactlyInAnyOrder listOf(includesFile, includesSubFile) sourceSet.samples shouldContainExactlyInAnyOrder listOf(samplesFile, samplesSubFile) - sourceSet.sourceRoots shouldContainExactlyInAnyOrder listOf(rootsFile, rootsSubFile) + sourceSet.sourceRoots shouldContainExactlyInAnyOrder listOf(rootsDir) sourceSet.suppressedFiles shouldContainExactlyInAnyOrder listOf(suppressedFile, suppressedSubFile) } }