aboutsummaryrefslogtreecommitdiff
path: root/integration-tests/maven
diff options
context:
space:
mode:
authorIgnat Beresnev <ignat.beresnev@jetbrains.com>2023-11-10 11:46:54 +0100
committerGitHub <noreply@github.com>2023-11-10 11:46:54 +0100
commit8e5c63d035ef44a269b8c43430f43f5c8eebfb63 (patch)
tree1b915207b2b9f61951ddbf0ff2e687efd053d555 /integration-tests/maven
parenta44efd4ba0c2e4ab921ff75e0f53fc9335aa79db (diff)
downloaddokka-8e5c63d035ef44a269b8c43430f43f5c8eebfb63.tar.gz
dokka-8e5c63d035ef44a269b8c43430f43f5c8eebfb63.tar.bz2
dokka-8e5c63d035ef44a269b8c43430f43f5c8eebfb63.zip
Restructure the project to utilize included builds (#3174)
* Refactor and simplify artifact publishing * Update Gradle to 8.4 * Refactor and simplify convention plugins and build scripts Fixes #3132 --------- Co-authored-by: Adam <897017+aSemy@users.noreply.github.com> Co-authored-by: Oleg Yukhnevich <whyoleg@gmail.com>
Diffstat (limited to 'integration-tests/maven')
-rw-r--r--integration-tests/maven/build.gradle.kts30
m---------integration-tests/maven/projects/biojava/biojava0
-rw-r--r--integration-tests/maven/projects/biojava/biojava.diff37
-rw-r--r--integration-tests/maven/projects/it-maven/customResources/custom-resource.svg7
-rw-r--r--integration-tests/maven/projects/it-maven/customResources/custom-style-to-add.css5
-rw-r--r--integration-tests/maven/projects/it-maven/customResources/logo-styles.css7
-rw-r--r--integration-tests/maven/projects/it-maven/pom.xml192
-rw-r--r--integration-tests/maven/projects/it-maven/src/main/java/it/basic/java/SampleJavaClass.java22
-rw-r--r--integration-tests/maven/projects/it-maven/src/main/kotlin/it/basic/PublicClass.kt57
-rw-r--r--integration-tests/maven/projects/it-maven/src/main/kotlin/it/internal/InternalClass.kt7
-rw-r--r--integration-tests/maven/projects/it-maven/src/main/kotlin/it/overriddenVisibility/VisiblePrivateClass.kt12
-rw-r--r--integration-tests/maven/projects/it-maven/src/main/kotlin/it/protected/ProtectedClass.kt10
-rw-r--r--integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/BiojavaIntegrationTest.kt63
-rw-r--r--integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/MavenIntegrationTest.kt219
14 files changed, 0 insertions, 668 deletions
diff --git a/integration-tests/maven/build.gradle.kts b/integration-tests/maven/build.gradle.kts
deleted file mode 100644
index 36a28f34..00000000
--- a/integration-tests/maven/build.gradle.kts
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-import org.jetbrains.dependsOnMavenLocalPublication
-
-plugins {
- id("org.jetbrains.conventions.dokka-integration-test")
- id("org.jetbrains.conventions.maven-cli-setup")
-}
-
-dependencies {
- implementation(projects.integrationTests)
-
- implementation(kotlin("test-junit5"))
-}
-
-tasks.integrationTest {
- dependsOnMavenLocalPublication()
-
- dependsOn(tasks.installMavenBinary)
- val mvn = mavenCliSetup.mvn
- inputs.file(mvn)
-
- val dokka_version: String by project
- environment("DOKKA_VERSION", dokka_version)
- doFirst("workaround for https://github.com/gradle/gradle/issues/24267") {
- environment("MVN_BINARY_PATH", mvn.get().asFile.invariantSeparatorsPath)
- }
-}
diff --git a/integration-tests/maven/projects/biojava/biojava b/integration-tests/maven/projects/biojava/biojava
deleted file mode 160000
-Subproject 059fbf1403d0704801df1427b0ec925102a645c
diff --git a/integration-tests/maven/projects/biojava/biojava.diff b/integration-tests/maven/projects/biojava/biojava.diff
deleted file mode 100644
index 33082722..00000000
--- a/integration-tests/maven/projects/biojava/biojava.diff
+++ /dev/null
@@ -1,37 +0,0 @@
-diff --git a/pom.xml b/pom.xml
-index 7e3e806d1..765b6dea3 100644
---- a/pom.xml
-+++ b/pom.xml
-@@ -31,6 +31,12 @@
- <distribution>repo</distribution>
- </license>
- </licenses>
-+ <pluginRepositories>
-+ <pluginRepository>
-+ <id>space</id>
-+ <url>https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven/</url>
-+ </pluginRepository>
-+ </pluginRepositories>
- <properties>
- <!-- Notice: if using java 9 or 10 jres, it is possible to simply use here "8", "9" or "10". But if using java 8 jre, "8" is not an allowed value but only "1.8"-->
- <jdk.version>1.8</jdk.version>
-@@ -338,6 +356,19 @@
-
-
- <plugins>
-+ <plugin>
-+ <groupId>org.jetbrains.dokka</groupId>
-+ <artifactId>dokka-maven-plugin</artifactId>
-+ <version>${dokka_version}</version>
-+ <executions>
-+ <execution>
-+ <phase>pre-site</phase>
-+ <goals>
-+ <goal>javadoc</goal>
-+ </goals>
-+ </execution>
-+ </executions>
-+ </plugin>
-
- <!-- give more memory for junit tests -->
- <plugin>
diff --git a/integration-tests/maven/projects/it-maven/customResources/custom-resource.svg b/integration-tests/maven/projects/it-maven/customResources/custom-resource.svg
deleted file mode 100644
index c4b95383..00000000
--- a/integration-tests/maven/projects/it-maven/customResources/custom-resource.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-<!--
- - Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- -->
-
-<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
- <path d="M18 9C18 14 14 18 9 18C4 18 0 14 0 9C0 4 4 0 9 0C14 0 18 4 18 9ZM14.2 6.2L12.8 4.8L7.5 10.1L5.3 7.8L3.8 9.2L7.5 13L14.2 6.2Z" fill="#4DBB5F"/>
-</svg>
diff --git a/integration-tests/maven/projects/it-maven/customResources/custom-style-to-add.css b/integration-tests/maven/projects/it-maven/customResources/custom-style-to-add.css
deleted file mode 100644
index f949ca1c..00000000
--- a/integration-tests/maven/projects/it-maven/customResources/custom-style-to-add.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-/* custom stylesheet */
diff --git a/integration-tests/maven/projects/it-maven/customResources/logo-styles.css b/integration-tests/maven/projects/it-maven/customResources/logo-styles.css
deleted file mode 100644
index c7932753..00000000
--- a/integration-tests/maven/projects/it-maven/customResources/logo-styles.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-:root {
- --dokka-logo-image-url: url('https://upload.wikimedia.org/wikipedia/commons/9/9d/Ubuntu_logo.svg');
-}
diff --git a/integration-tests/maven/projects/it-maven/pom.xml b/integration-tests/maven/projects/it-maven/pom.xml
deleted file mode 100644
index 6246e27a..00000000
--- a/integration-tests/maven/projects/it-maven/pom.xml
+++ /dev/null
@@ -1,192 +0,0 @@
-<!--
- ~ Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.jetbrains.dokka</groupId>
- <artifactId>it-maven</artifactId>
- <version>1.0-SNAPSHOT</version>
-
- <properties>
- <kotlin.version>1.9.20</kotlin.version>
- </properties>
- <build>
- <plugins>
- <plugin>
- <groupId>org.jetbrains.kotlin</groupId>
- <artifactId>kotlin-maven-plugin</artifactId>
- <version>${kotlin.version}</version>
- <executions>
- <execution>
- <id>compile</id>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <sourceDirs>
- <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
- <sourceDir>${project.basedir}/src/main/java</sourceDir>
- </sourceDirs>
- </configuration>
- </execution>
- <execution>
- <id>test-compile</id>
- <goals>
- <goal>test-compile</goal>
- </goals>
- <configuration>
- <sourceDirs>
- <sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
- <sourceDir>${project.basedir}/src/test/java</sourceDir>
- </sourceDirs>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.5.1</version>
- <executions>
- <!-- Replacing default-compile as it is treated specially by maven -->
- <execution>
- <id>default-compile</id>
- <phase>none</phase>
- </execution>
- <!-- Replacing default-testCompile as it is treated specially by maven -->
- <execution>
- <id>default-testCompile</id>
- <phase>none</phase>
- </execution>
- <execution>
- <id>java-compile</id>
- <phase>compile</phase>
- <goals>
- <goal>compile</goal>
- </goals>
- </execution>
- <execution>
- <id>java-test-compile</id>
- <phase>test-compile</phase>
- <goals>
- <goal>testCompile</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.jetbrains.dokka</groupId>
- <artifactId>dokka-maven-plugin</artifactId>
- <version>$dokka_version</version>
- <executions>
- <execution>
- <phase>pre-site</phase>
- <goals>
- <goal>dokka</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
-
- <!-- Set to true to skip dokka task, default: false -->
- <skip>false</skip>
-
- <!-- Default: ${project.artifactId} -->
- <moduleName>Maven Integration Test Module</moduleName>
-
- <!-- Default: ${project.basedir}/target/dokka -->
- <outputDir>${project.basedir}/output</outputDir>
-
- <!-- Use default or set to custom path to cache directory to enable package-list caching. -->
- <!-- When set to default, caches stored in $USER_HOME/.cache/dokka -->
- <cacheRoot>default</cacheRoot>
-
-
- <!-- Used for linking to JDK, default: 6 -->
- <jdkVersion>8</jdkVersion>
-
- <!-- Do not output deprecated members, applies globally, can be overridden by packageOptions -->
- <skipDeprecated>false</skipDeprecated>
- <!-- Emit warnings about not documented members, applies globally, also can be overridden by packageOptions -->
- <reportUndocumented>true</reportUndocumented>
- <!-- Do not create index pages for empty packages -->
- <skipEmptyPackages>true</skipEmptyPackages>
-
- <!-- Short form list of sourceRoots, by default, set to ${project.compileSourceRoots} -->
- <sourceDirectories>
- <dir>${project.basedir}/src/main/kotlin</dir>
- <dir>${project.basedir}/src/main/java</dir>
- </sourceDirectories>
-
- <documentedVisibilities>
- <visibility>PUBLIC</visibility>
- <visibility>PROTECTED</visibility>
- </documentedVisibilities>
-
- <!-- Disable linking to online kotlin-stdlib documentation -->
- <noStdlibLink>false</noStdlibLink>
-
- <!-- Disable linking to online JDK documentation -->
- <noJdkLink>false</noJdkLink>
-
- <suppressObviousFunctions>false</suppressObviousFunctions>
-
- <!-- Allows to customize documentation generation options on a per-package basis -->
- <perPackageOptions>
- <packageOptions>
- <!-- Will match kotlin and all sub-packages of it -->
- <matchingRegex>kotlin</matchingRegex>
-
- <!-- All options are optional, default values are below: -->
- <skipDeprecated>false</skipDeprecated>
- <!-- Emit warnings about not documented members -->
- <reportUndocumented>true</reportUndocumented>
- <includeNonPublic>false</includeNonPublic>
- </packageOptions>
-
- <packageOptions>
- <matchingRegex>it.overriddenVisibility.*</matchingRegex>
- <documentedVisibilities>
- <visibility>PRIVATE</visibility>
- </documentedVisibilities>
- </packageOptions>
- </perPackageOptions>
- <pluginsConfiguration>
- <org.jetbrains.dokka.base.DokkaBase>
- <customAssets>
- <customAsset>${project.basedir}/customResources/custom-resource.svg</customAsset>
- </customAssets>
- <customStyleSheets>
- <customStyleSheet>${project.basedir}/customResources/logo-styles.css</customStyleSheet>
- <customStyleSheet>${project.basedir}/customResources/custom-style-to-add.css</customStyleSheet>
- </customStyleSheets>
- </org.jetbrains.dokka.base.DokkaBase>
- </pluginsConfiguration>
- </configuration>
- </plugin>
- </plugins>
- <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
- <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
- </build>
-
- <pluginRepositories>
- <pluginRepository>
- <id>Space</id>
- <name>Space</name>
- <url>https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven/</url>
- </pluginRepository>
- </pluginRepositories>
-
- <dependencies>
- <dependency>
- <groupId>org.jetbrains.kotlin</groupId>
- <artifactId>kotlin-stdlib</artifactId>
- <version>${kotlin.version}</version>
- </dependency>
- </dependencies>
-
-
-</project>
diff --git a/integration-tests/maven/projects/it-maven/src/main/java/it/basic/java/SampleJavaClass.java b/integration-tests/maven/projects/it-maven/src/main/java/it/basic/java/SampleJavaClass.java
deleted file mode 100644
index e08bb66a..00000000
--- a/integration-tests/maven/projects/it-maven/src/main/java/it/basic/java/SampleJavaClass.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package it.basic.java;
-
-import it.basic.PublicClass;
-
-/**
- * This class is, unlike {@link PublicClass}, written in Java
- */
-@SuppressWarnings("unused")
-public class SampleJavaClass {
-
- /**
- * @return Empty instance of {@link PublicClass}
- */
- public PublicClass publicDocumentedFunction() {
- return new PublicClass();
- }
-
-
- public PublicClass publicUndocumentedFunction() {
- return new PublicClass();
- }
-}
diff --git a/integration-tests/maven/projects/it-maven/src/main/kotlin/it/basic/PublicClass.kt b/integration-tests/maven/projects/it-maven/src/main/kotlin/it/basic/PublicClass.kt
deleted file mode 100644
index d7a72392..00000000
--- a/integration-tests/maven/projects/it-maven/src/main/kotlin/it/basic/PublicClass.kt
+++ /dev/null
@@ -1,57 +0,0 @@
-@file:Suppress("unused")
-
-package it.basic
-
-/**
- * §PUBLIC§ (marker for asserts)
- */
-class PublicClass {
- /**
- * This function is public and documented
- */
- fun publicDocumentedFunction(): String = ""
-
- fun publicUndocumentedFunction(): String = ""
-
- /**
- * This function is internal and documented
- */
- internal fun internalDocumentedFunction(): String = ""
-
- internal fun internalUndocumentedFunction(): String = ""
-
- /**
- * This function is private and documented
- */
- private fun privateDocumentedFunction(): String = ""
-
- private fun privateUndocumentedFunction(): String = ""
-
- /**
- * This function is protected and documented
- */
- protected fun protectedDocumentedFunction(): String = ""
-
- protected fun protectedUndocumentedFunction(): String = ""
-
- /**
- * This property is public and documented
- */
- val publicDocumentedProperty: Int = 0
-
- val publicUndocumentedProperty: Int = 0
-
- /**
- * This property internal and documented
- */
- val internalDocumentedProperty: Int = 0
-
- val internalUndocumentedProperty: Int = 0
-
- /**
- * This property private and documented
- */
- private val privateDocumentedProperty: Int = 0
-
- private val privateUndocumentedProperty: Int = 0
-}
diff --git a/integration-tests/maven/projects/it-maven/src/main/kotlin/it/internal/InternalClass.kt b/integration-tests/maven/projects/it-maven/src/main/kotlin/it/internal/InternalClass.kt
deleted file mode 100644
index 6173d239..00000000
--- a/integration-tests/maven/projects/it-maven/src/main/kotlin/it/internal/InternalClass.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package it.internal
-
-/**
- * §INTERNAL§ (marker for asserts)
- * This class is internal and should not be rendered
- */
-internal class InternalClass
diff --git a/integration-tests/maven/projects/it-maven/src/main/kotlin/it/overriddenVisibility/VisiblePrivateClass.kt b/integration-tests/maven/projects/it-maven/src/main/kotlin/it/overriddenVisibility/VisiblePrivateClass.kt
deleted file mode 100644
index 230f5e0b..00000000
--- a/integration-tests/maven/projects/it-maven/src/main/kotlin/it/overriddenVisibility/VisiblePrivateClass.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package it.overriddenVisibility
-
-/**
- * Private classes and methods generally should not be visible, but [documentedVisibilities]
- * are overriden for this specific package to include private code
- *
- * §PRIVATE§ (marker for asserts)
- */
-private class VisiblePrivateClass {
- private val privateVal: Int = 0
- private fun privateMethod() {}
-} \ No newline at end of file
diff --git a/integration-tests/maven/projects/it-maven/src/main/kotlin/it/protected/ProtectedClass.kt b/integration-tests/maven/projects/it-maven/src/main/kotlin/it/protected/ProtectedClass.kt
deleted file mode 100644
index ad19f1a1..00000000
--- a/integration-tests/maven/projects/it-maven/src/main/kotlin/it/protected/ProtectedClass.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package it.protected
-
-/**
- * Protected class should be visible because it's included in documentedVisibilities
- *
- * §PROTECTED§ (marker for asserts)
- */
-protected class ProtectedClass {
- protected fun protectedFun(): String = "protected"
-}
diff --git a/integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/BiojavaIntegrationTest.kt b/integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/BiojavaIntegrationTest.kt
deleted file mode 100644
index 7987d45e..00000000
--- a/integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/BiojavaIntegrationTest.kt
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.it.maven
-
-import org.jetbrains.dokka.it.*
-import java.io.File
-import kotlin.test.BeforeTest
-import kotlin.test.Test
-import kotlin.test.assertEquals
-import kotlin.test.assertTrue
-
-class BiojavaIntegrationTest : AbstractIntegrationTest(), TestOutputCopier {
-
- private val currentDokkaVersion: String = checkNotNull(System.getenv("DOKKA_VERSION"))
- private val mavenBinaryFile: File = File(checkNotNull(System.getenv("MVN_BINARY_PATH")))
- override val projectOutputLocation: File by lazy { File(projectDir, "biojava-core/target/dokkaJavadoc") }
-
- @BeforeTest
- fun prepareProjectFiles() {
- val templateProjectDir = File("projects", "biojava/biojava")
- templateProjectDir.copyRecursively(projectDir)
- val customResourcesDir = File(templateProjectDir, "custom Resources")
- if (customResourcesDir.exists() && customResourcesDir.isDirectory) {
- customResourcesDir.copyRecursively(File(projectDir, "customResources"), overwrite = true)
- }
- copyAndApplyGitDiff(File("projects", "biojava/biojava.diff"))
- }
-
- @Test
- fun `dokka javadoc`() {
- val result = ProcessBuilder().directory(projectDir)
- .command(mavenBinaryFile.absolutePath, "dokka:javadoc", "-pl", "biojava-core", "\"-Ddokka_version=$currentDokkaVersion\"", "-U", "-e").start().awaitProcessResult()
-
- diagnosticAsserts(result)
-
- assertTrue(projectOutputLocation.isDirectory, "Missing dokka output directory")
-
- val scriptsDir = File(projectOutputLocation, "jquery")
- assertTrue(scriptsDir.isDirectory, "Missing jquery directory")
-
- val stylesDir = File(projectOutputLocation, "resources")
- assertTrue(stylesDir.isDirectory, "Missing resources directory")
-
- projectDir.allHtmlFiles().forEach { file ->
- assertContainsNoErrorClass(file)
- assertNoUnresolvedLinks(file)
- }
- }
-
- private fun diagnosticAsserts(result: ProcessResult) {
- 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)"
- )
- }
-}
diff --git a/integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/MavenIntegrationTest.kt b/integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/MavenIntegrationTest.kt
deleted file mode 100644
index 7606072c..00000000
--- a/integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/MavenIntegrationTest.kt
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.it.maven
-
-import org.intellij.lang.annotations.Language
-import org.jetbrains.dokka.it.AbstractIntegrationTest
-import org.jetbrains.dokka.it.ProcessResult
-import org.jetbrains.dokka.it.awaitProcessResult
-import java.io.File
-import kotlin.test.*
-
-class MavenIntegrationTest : AbstractIntegrationTest() {
-
- private val currentDokkaVersion: String = checkNotNull(System.getenv("DOKKA_VERSION"))
-
- private val mavenBinaryFile: File = File(checkNotNull(System.getenv("MVN_BINARY_PATH")))
-
- @BeforeTest
- fun prepareProjectFiles() {
- val templateProjectDir = File("projects", "it-maven")
- templateProjectDir.copyRecursively(projectDir)
- val pomXml = File(projectDir, "pom.xml")
- assertTrue(pomXml.isFile)
- pomXml.apply {
- writeText(readText().replace("\$dokka_version", currentDokkaVersion))
- }
- val customResourcesDir = File(templateProjectDir, "customResources")
- if (customResourcesDir.exists() && customResourcesDir.isDirectory) {
- customResourcesDir.copyRecursively(File(projectDir, "customResources"), overwrite = true)
- }
- }
-
- @Test
- fun `dokka help`() {
- val result = ProcessBuilder().directory(projectDir)
- .command(mavenBinaryFile.absolutePath, "dokka:help", "-U", "-e")
- .start()
- .awaitProcessResult()
-
- // format the output to remove blank lines and make newlines system-independent
- val output = result.output.lines().filter { it.isNotBlank() }.joinToString("\n")
-
- assertContains(
- output,
- """
- |This plugin has 4 goals:
- |dokka:dokka
- |dokka:help
- |dokka:javadoc
- |dokka:javadocJar
- """.trimMargin()
- )
- }
-
- @Test
- fun `dokka dokka`() {
- val result = ProcessBuilder().directory(projectDir)
- .command(mavenBinaryFile.absolutePath, "dokka:dokka", "-U", "-e").start().awaitProcessResult()
-
- diagnosticAsserts(result)
-
- val dokkaOutputDir = File(projectDir, "output")
- 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)
- assertNoEmptyLinks(file)
- assertNoEmptySpans(file)
- }
-
- assertTrue(
- stylesDir.resolve("logo-styles.css").readText().contains(
- "--dokka-logo-image-url: url('https://upload.wikimedia.org/wikipedia/commons/9/9d/Ubuntu_logo.svg');",
- )
- )
- assertTrue(stylesDir.resolve("custom-style-to-add.css").isFile)
- projectDir.allHtmlFiles().forEach { file ->
- if (file.name != "navigation.html") {
- assertTrue(
- "custom-style-to-add.css" in file.readText(),
- "custom styles not added to html file ${file.name}"
- )
- }
- }
- assertTrue(stylesDir.resolve("custom-style-to-add.css").readText().contains("""/* custom stylesheet */"""))
- assertTrue(imagesDir.resolve("custom-resource.svg").isFile)
-
- assertConfiguredVisibility(projectDir)
- }
-
- @Test
- fun `dokka javadoc`() {
- val result = ProcessBuilder().directory(projectDir)
- .command(mavenBinaryFile.absolutePath, "dokka:javadoc", "-U", "-e").start().awaitProcessResult()
-
- diagnosticAsserts(result)
-
- val dokkaOutputDir = File(projectDir, "output")
- assertTrue(dokkaOutputDir.isDirectory, "Missing dokka output directory")
-
- val scriptsDir = File(dokkaOutputDir, "jquery")
- assertTrue(scriptsDir.isDirectory, "Missing jquery directory")
-
- val stylesDir = File(dokkaOutputDir, "resources")
- assertTrue(stylesDir.isDirectory, "Missing resources directory")
-
- projectDir.allHtmlFiles().forEach { file ->
- assertContainsNoErrorClass(file)
- assertNoUnresolvedLinks(file)
- }
- }
-
- @Test
- fun `dokka javadocJar`() {
- val result = ProcessBuilder().directory(projectDir)
- .command(mavenBinaryFile.absolutePath, "dokka:javadocJar", "-U", "-e").start().awaitProcessResult()
-
- diagnosticAsserts(result)
-
- val dokkaOutputDir = File(projectDir, "output")
- assertTrue(dokkaOutputDir.isDirectory, "Missing dokka output directory")
-
- val scriptsDir = File(dokkaOutputDir, "jquery")
- assertTrue(scriptsDir.isDirectory, "Missing jquery directory")
-
- val stylesDir = File(dokkaOutputDir, "resources")
- assertTrue(stylesDir.isDirectory, "Missing resources directory")
-
- val dokkaTargetDir = File(projectDir, "target")
- assertTrue(dokkaOutputDir.isDirectory, "Missing dokka target directory")
-
- val jarFile = File(dokkaTargetDir, "it-maven-1.0-SNAPSHOT-javadoc.jar")
- assertTrue(jarFile.isFile, "Missing dokka jar file")
-
- projectDir.allHtmlFiles().forEach { file ->
- assertContainsNoErrorClass(file)
- assertNoUnresolvedLinks(file)
- }
- }
-
- private fun diagnosticAsserts(result: ProcessResult) {
- 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)"
- )
-
- val undocumentedJavaReportRegex = Regex("""Undocumented: it\.basic\.java""")
- val amountOfUndocumentedJavaReports = undocumentedJavaReportRegex.findAll(result.output).count()
- assertTrue(
- amountOfUndocumentedJavaReports > 0,
- "Expected at least one report of undocumented java code (found $amountOfUndocumentedJavaReports)"
- )
- }
-
- private fun assertConfiguredVisibility(projectDir: File) {
- val projectHtmlFiles = projectDir.allHtmlFiles().toList()
-
- assertContentVisibility(
- contentFiles = projectHtmlFiles,
- documentPublic = true,
- documentProtected = true, // sourceSet documentedVisibilities
- documentInternal = false,
- documentPrivate = true // for overriddenVisibility package
- )
-
- assertContainsFilePaths(
- outputFiles = projectHtmlFiles,
- expectedFilePaths = listOf(
- // documentedVisibilities is overridden for package `overriddenVisibility` specifically
- // to include private code, so html pages for it are expected to have been created
- Regex("it\\.overriddenVisibility/-visible-private-class/private-method\\.html"),
- Regex("it\\.overriddenVisibility/-visible-private-class/private-val\\.html"),
- )
- )
- }
-
- companion object {
- /*
- * TODO replace with kotlin.test.assertContains after migrating to Kotlin language version 1.5+
- */
- fun assertContains(
- charSequence: CharSequence,
- @Language("TEXT") other: CharSequence,
- ignoreCase: Boolean = false
- ) {
- asserter.assertTrue(
- { "Expected the char sequence to contain the substring.\nCharSequence <$charSequence>, substring <$other>, ignoreCase <$ignoreCase>." },
- charSequence.contains(other, ignoreCase)
- )
- }
- }
-}