1 package org.jetbrains.dokka.gradle 2 3 import org.gradle.testkit.runner.TaskOutcome 4 import kotlin.test.assertEquals 5 6 abstract class AbstractAndroidAppTest(val testDataRootPath: String) : AbstractDokkaAndroidGradleTest() { 7 prepareTestDatanull8 fun prepareTestData() { 9 val testDataRoot = testDataFolder.resolve(testDataRootPath) 10 val tmpRoot = testProjectDir.root.toPath() 11 12 testDataRoot.resolve("app").copy(tmpRoot.resolve("app")) 13 testDataRoot.resolve("build.gradle").copy(tmpRoot.resolve("build.gradle")) 14 testDataRoot.resolve("settings.gradle").copy(tmpRoot.resolve("settings.gradle")) 15 16 androidLocalProperties?.copy(tmpRoot.resolve("local.properties")) 17 } 18 19 20 data class AndroidPluginParams(val pluginVersion: String, val buildToolsVersion: String, val compileSdk: Int) { asArgumentsnull21 fun asArguments(): List<String> = listOf( 22 "-Pabt_plugin_version=$pluginVersion", 23 "-Pabt_version=$buildToolsVersion", 24 "-Psdk_version=$compileSdk" 25 ) 26 } 27 28 29 protected fun doTest(gradleVersion: String, kotlinVersion: String, androidPluginParams: AndroidPluginParams) { 30 prepareTestData() 31 32 val result = configure(gradleVersion, kotlinVersion, 33 arguments = arrayOf("dokka", "--stacktrace") + androidPluginParams.asArguments()) 34 .build() 35 36 println(result.output) 37 38 assertEquals(TaskOutcome.SUCCESS, result.task(":app:dokka")?.outcome) 39 40 val docsOutput = "app/build/dokka" 41 42 checkOutputStructure("$testDataRootPath/fileTree.txt", docsOutput) 43 44 checkNoErrorClasses(docsOutput) 45 checkNoUnresolvedLinks(docsOutput) 46 47 checkExternalLink(docsOutput, "<span class=\"identifier\">Activity</span>", 48 """<a href="https://developer.android.com/reference/android/app/Activity.html"><span class="identifier">Activity</span></a>""") 49 } 50 51 }