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..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 @@ -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, + classpath = spec.classpath.asFileTree.files.toList(), + includes = spec.includes.asFileTree.files, + samples = spec.samples.asFileTree.files, sourceRoots = spec.sourceRoots.files, - suppressedFiles = spec.suppressedFiles.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 d1fe42f94d..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 @@ -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() + rootsDir.resolve("test-file").createFile() + 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(rootsDir) + sourceSet.suppressedFiles shouldContainExactlyInAnyOrder listOf(suppressedFile, suppressedSubFile) + } + } + context("when building a ExternalDocumentationLinkSpec") { val project = createProject()