aboutsummaryrefslogtreecommitdiff
path: root/integration-tests/cli/src
diff options
context:
space:
mode:
Diffstat (limited to 'integration-tests/cli/src')
-rw-r--r--integration-tests/cli/src/integrationTest/kotlin/org/jetbrains/dokka/it/cli/CliIntegrationTest.kt89
-rw-r--r--integration-tests/cli/src/main/kotlin/org/jetbrains/dokka/it/cli/AbstractCliIntegrationTest.kt36
2 files changed, 125 insertions, 0 deletions
diff --git a/integration-tests/cli/src/integrationTest/kotlin/org/jetbrains/dokka/it/cli/CliIntegrationTest.kt b/integration-tests/cli/src/integrationTest/kotlin/org/jetbrains/dokka/it/cli/CliIntegrationTest.kt
new file mode 100644
index 00000000..cfa752d6
--- /dev/null
+++ b/integration-tests/cli/src/integrationTest/kotlin/org/jetbrains/dokka/it/cli/CliIntegrationTest.kt
@@ -0,0 +1,89 @@
+package org.jetbrains.dokka.it.cli
+
+import org.jetbrains.dokka.it.awaitProcessResult
+import java.io.File
+import kotlin.test.BeforeTest
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertTrue
+
+class CliIntegrationTest : AbstractCliIntegrationTest() {
+
+ @BeforeTest
+ fun copyProject() {
+ val templateProjectDir = File("projects", "it-cli")
+ templateProjectDir.copyRecursively(projectDir)
+ }
+
+ @Test
+ fun runHelp() {
+ val process = ProcessBuilder("java", "-jar", cliJarFile.path, "-h")
+ .redirectErrorStream(true)
+ .start()
+
+ val result = process.awaitProcessResult()
+ assertEquals(0, result.exitCode, "Expected exitCode 0 (Success)")
+ assertTrue("Usage: " in result.output)
+ }
+
+ @Test
+ fun runCli() {
+ val dokkaOutputDir = File(projectDir, "output")
+ assertTrue(dokkaOutputDir.mkdirs())
+ val process = ProcessBuilder(
+ "java", "-jar", cliJarFile.path,
+ "-outputDir", dokkaOutputDir.path,
+ "-pluginsClasspath", basePluginJarFile.path,
+ "-sourceSet",
+ buildString {
+ append(" -moduleName it-cli")
+ append(" -moduleDisplayName CLI-Example")
+ append(" -sourceSetName cliMain")
+ append(" -src ${File(projectDir, "src").path}")
+ append(" -jdkVersion 8")
+ append(" -analysisPlatform jvm")
+ append(" -reportUndocumented")
+ append(" -skipDeprecated")
+ }
+ )
+ .redirectErrorStream(true)
+ .start()
+
+ val result = process.awaitProcessResult()
+ assertEquals(0, result.exitCode, "Expected exitCode 0 (Success)")
+
+ val extensionLoadedRegex = Regex("""Extension: org\.jetbrains\.dokka\.base\.DokkaBase""")
+ val amountOfExtensionsLoaded = extensionLoadedRegex.findAll(result.output).count()
+
+ assertTrue(
+ amountOfExtensionsLoaded > 10,
+ "Expected more than 10 extensions being present (found $amountOfExtensionsLoaded)"
+ )
+
+ val undocumentedReportRegex = Regex("""Undocumented:""")
+ val amountOfUndocumentedReports = undocumentedReportRegex.findAll(result.output).count()
+ assertTrue(
+ amountOfUndocumentedReports > 0,
+ "Expected at least one report of undocumented code (found $amountOfUndocumentedReports)"
+ )
+
+ assertTrue(dokkaOutputDir.isDirectory, "Missing dokka output directory")
+
+ val imagesDir = File(dokkaOutputDir, "images")
+ assertTrue(imagesDir.isDirectory, "Missing images directory")
+
+ val scriptsDir = File(dokkaOutputDir, "scripts")
+ assertTrue(scriptsDir.isDirectory, "Missing scripts directory")
+
+ val stylesDir = File(dokkaOutputDir, "styles")
+ assertTrue(stylesDir.isDirectory, "Missing styles directory")
+
+ val navigationHtml = File(dokkaOutputDir, "navigation.html")
+ assertTrue(navigationHtml.isFile, "Missing navigation.html")
+
+ projectDir.allHtmlFiles().forEach { file ->
+ assertContainsNoErrorClass(file)
+ assertNoUnresolvedLInks(file)
+ }
+ }
+}
diff --git a/integration-tests/cli/src/main/kotlin/org/jetbrains/dokka/it/cli/AbstractCliIntegrationTest.kt b/integration-tests/cli/src/main/kotlin/org/jetbrains/dokka/it/cli/AbstractCliIntegrationTest.kt
new file mode 100644
index 00000000..7f6f9433
--- /dev/null
+++ b/integration-tests/cli/src/main/kotlin/org/jetbrains/dokka/it/cli/AbstractCliIntegrationTest.kt
@@ -0,0 +1,36 @@
+package org.jetbrains.dokka.it.cli
+
+import org.jetbrains.dokka.it.AbstractIntegrationTest
+import java.io.File
+import kotlin.test.BeforeTest
+import kotlin.test.assertTrue
+
+abstract class AbstractCliIntegrationTest : AbstractIntegrationTest() {
+
+ protected val cliJarFile: File by lazy {
+ File(temporaryTestFolder.root, "dokka.jar")
+ }
+
+ protected val basePluginJarFile: File by lazy {
+ File(temporaryTestFolder.root, "base-plugin.jar")
+ }
+
+ @BeforeTest
+ fun copyJarFiles() {
+ val cliJarPathEnvironmentKey = "CLI_JAR_PATH"
+ val cliJarFile = File(System.getenv(cliJarPathEnvironmentKey))
+ assertTrue(
+ cliJarFile.exists() && cliJarFile.isFile,
+ "Missing path to CLI jar System.getenv($cliJarPathEnvironmentKey)"
+ )
+ cliJarFile.copyTo(this.cliJarFile)
+
+ val basePluginPathEnvironmentKey = "BASE_PLUGIN_JAR_PATH"
+ val basePluginJarFile = File(System.getenv(basePluginPathEnvironmentKey))
+ assertTrue(
+ basePluginJarFile.exists() && basePluginJarFile.isFile,
+ "Missing path to base plugin jar System.getenv($basePluginPathEnvironmentKey)"
+ )
+ basePluginJarFile.copyTo(this.basePluginJarFile)
+ }
+}