diff options
Diffstat (limited to 'integration-tests/cli')
11 files changed, 0 insertions, 629 deletions
diff --git a/integration-tests/cli/build.gradle.kts b/integration-tests/cli/build.gradle.kts deleted file mode 100644 index a5f39dfe..00000000 --- a/integration-tests/cli/build.gradle.kts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar - -plugins { - id("org.jetbrains.conventions.dokka-integration-test") - id("com.github.johnrengelman.shadow") -} - -val dokka_version: String by project -evaluationDependsOn(":runners:cli") -evaluationDependsOn(":plugins:base") - -dependencies { - implementation(kotlin("test-junit5")) - implementation(projects.integrationTests) -} - -/* Create a fat base plugin jar for cli tests */ -val basePluginShadow: Configuration by configurations.creating { - attributes { - attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage::class.java, "java-runtime")) - } -} - -dependencies { - basePluginShadow(projects.plugins.base) - - // TODO [beresnev] analysis switcher - basePluginShadow(project(path = ":subprojects:analysis-kotlin-descriptors", configuration = "shadow")) -} - -val basePluginShadowJar by tasks.register("basePluginShadowJar", ShadowJar::class) { - configurations = listOf(basePluginShadow) - archiveFileName.set("fat-base-plugin-$dokka_version.jar") - archiveClassifier.set("") - - // service files are merged to make sure all Dokka plugins - // from the dependencies are loaded, and not just a single one. - mergeServiceFiles() -} - -tasks.integrationTest { - inputs.dir(file("projects")) - val cliJar = tasks.getByPath(":runners:cli:shadowJar") as ShadowJar - environment("CLI_JAR_PATH", cliJar.archiveFile.get()) - environment("BASE_PLUGIN_JAR_PATH", basePluginShadowJar.archiveFile.get()) - dependsOn(cliJar) - dependsOn(basePluginShadowJar) -} diff --git a/integration-tests/cli/projects/it-cli/src/main/java/it/basic/java/SampleJavaClass.java b/integration-tests/cli/projects/it-cli/src/main/java/it/basic/java/SampleJavaClass.java deleted file mode 100644 index 23b0202c..00000000 --- a/integration-tests/cli/projects/it-cli/src/main/java/it/basic/java/SampleJavaClass.java +++ /dev/null @@ -1,17 +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(); - } -} diff --git a/integration-tests/cli/projects/it-cli/src/main/kotlin/it/basic/EmptyPackage.kt b/integration-tests/cli/projects/it-cli/src/main/kotlin/it/basic/EmptyPackage.kt deleted file mode 100644 index 50f02c00..00000000 --- a/integration-tests/cli/projects/it-cli/src/main/kotlin/it/basic/EmptyPackage.kt +++ /dev/null @@ -1 +0,0 @@ -package emptypackagetest
\ No newline at end of file diff --git a/integration-tests/cli/projects/it-cli/src/main/kotlin/it/basic/PublicClass.kt b/integration-tests/cli/projects/it-cli/src/main/kotlin/it/basic/PublicClass.kt deleted file mode 100644 index d7a72392..00000000 --- a/integration-tests/cli/projects/it-cli/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/cli/projects/it-cli/src/main/kotlin/it/internal/InternalClass.kt b/integration-tests/cli/projects/it-cli/src/main/kotlin/it/internal/InternalClass.kt deleted file mode 100644 index f5be5406..00000000 --- a/integration-tests/cli/projects/it-cli/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
\ No newline at end of file diff --git a/integration-tests/cli/projects/it-cli/src/main/kotlin/it/overriddenVisibility/VisiblePrivateClass.kt b/integration-tests/cli/projects/it-cli/src/main/kotlin/it/overriddenVisibility/VisiblePrivateClass.kt deleted file mode 100644 index 230f5e0b..00000000 --- a/integration-tests/cli/projects/it-cli/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/cli/projects/it-cli/src/main/kotlin/it/protected/ProtectedClass.kt b/integration-tests/cli/projects/it-cli/src/main/kotlin/it/protected/ProtectedClass.kt deleted file mode 100644 index ad19f1a1..00000000 --- a/integration-tests/cli/projects/it-cli/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/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 deleted file mode 100644 index 8bab690b..00000000 --- a/integration-tests/cli/src/integrationTest/kotlin/org/jetbrains/dokka/it/cli/CliIntegrationTest.kt +++ /dev/null @@ -1,377 +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.cli - -import org.jetbrains.dokka.it.awaitProcessResult -import java.io.File -import java.io.PrintWriter -import java.lang.IllegalStateException -import kotlin.test.* - -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, - "-moduleName", "Basic Project", - "-sourceSet", - buildString { - 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) - assertNoEmptyLinks(file) - assertNoEmptySpans(file) - } - - assertContentVisibility( - contentFiles = projectDir.allHtmlFiles().toList(), - documentPublic = true, - documentInternal = false, - documentProtected = false, - documentPrivate = false - ) - - assertFalse( - projectDir.resolve("output").resolve("index.html").readText().contains("emptypackagetest"), - "Expected not to render empty packages" - ) - } - - @Test - fun failCli() { - val dokkaOutputDir = File(projectDir, "output") - assertTrue(dokkaOutputDir.mkdirs()) - val process = ProcessBuilder( - "java", "-jar", cliJarFile.path, - "-outputDir", dokkaOutputDir.path, - "-pluginsClasspath", basePluginJarFile.path, - "-moduleName", "Basic Project", - "-failOnWarning", - "-sourceSet", - buildString { - append(" -sourceSetName cliMain") - append(" -src ${File(projectDir, "src").path}") - append(" -jdkVersion 8") - append(" -analysisPlatform jvm") - append(" -reportUndocumented") - } - ) - .redirectErrorStream(true) - .start() - - val result = process.awaitProcessResult() - assertEquals(1, result.exitCode, "Expected exitCode 1 (Fail)") - - assertTrue(result.output.contains("Exception in thread \"main\" org.jetbrains.dokka.DokkaException: Failed with warningCount")) - } - - @Test - fun emptyPackagesTest() { - val dokkaOutputDir = File(projectDir, "output") - assertTrue(dokkaOutputDir.mkdirs()) - val process = ProcessBuilder( - "java", "-jar", cliJarFile.path, - "-outputDir", dokkaOutputDir.path, - "-pluginsClasspath", basePluginJarFile.path, - "-moduleName", "Basic Project", - "-sourceSet", - buildString { - append(" -sourceSetName cliMain") - append(" -src ${File(projectDir, "src").path}") - append(" -jdkVersion 8") - append(" -analysisPlatform jvm") - append(" -noSkipEmptyPackages") - } - ) - .redirectErrorStream(true) - .start() - - val result = process.awaitProcessResult() - assertEquals(0, result.exitCode, "Expected exitCode 0 (Success)") - - assertTrue( - projectDir.resolve("output").resolve("index.html").readText().contains("emptypackagetest"), - "Expected to render empty packages" - ) - } - - @Test - fun `module name should be optional`() { - val dokkaOutputDir = File(projectDir, "output") - assertTrue(dokkaOutputDir.mkdirs()) - val process = ProcessBuilder( - "java", "-jar", cliJarFile.path, - "-outputDir", dokkaOutputDir.path, - "-loggingLevel", "DEBUG", - "-pluginsClasspath", basePluginJarFile.path, - "-sourceSet", - buildString { - append(" -src ${File(projectDir, "src").path}") - } - ) - .redirectErrorStream(true) - .start() - - val result = process.awaitProcessResult() - assertEquals(0, result.exitCode, "Expected exitCode 0 (Success)") - assertTrue(result.output.contains("Loaded plugins: "), "Expected output to not contain info logs") - - 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") - } - - @Test - fun `logging level should be respected`() { - val dokkaOutputDir = File(projectDir, "output") - assertTrue(dokkaOutputDir.mkdirs()) - val process = ProcessBuilder( - "java", "-jar", cliJarFile.path, - "-outputDir", dokkaOutputDir.path, - "-loggingLevel", "WARN", - "-pluginsClasspath", basePluginJarFile.path, - "-sourceSet", - buildString { - append(" -src ${File(projectDir, "src").path}") - } - ) - .redirectErrorStream(true) - .start() - - val result = process.awaitProcessResult() - assertEquals(0, result.exitCode, "Expected exitCode 0 (Success)") - assertFalse(result.output.contains("Loaded plugins: "), "Expected output to not contain info logs") - } - - @Test - fun `custom documented visibility`() { - val dokkaOutputDir = File(projectDir, "output") - assertTrue(dokkaOutputDir.mkdirs()) - val process = ProcessBuilder( - "java", "-jar", cliJarFile.path, - "-outputDir", dokkaOutputDir.path, - "-pluginsClasspath", basePluginJarFile.path, - "-moduleName", "Basic Project", - "-sourceSet", - buildString { - append(" -sourceSetName cliMain") - append(" -src ${File(projectDir, "src").path}") - append(" -jdkVersion 8") - append(" -analysisPlatform jvm") - append(" -documentedVisibilities PUBLIC;PROTECTED") - append(" -perPackageOptions it.overriddenVisibility.*,+visibility:PRIVATE") - } - ) - .redirectErrorStream(true) - .start() - - val result = process.awaitProcessResult() - assertEquals(0, result.exitCode, "Expected exitCode 0 (Success)") - - val allHtmlFiles = projectDir.allHtmlFiles().toList() - - assertContentVisibility( - contentFiles = allHtmlFiles, - documentPublic = true, - documentProtected = true, // sourceSet documentedVisibilities - documentInternal = false, - documentPrivate = true // for overriddenVisibility package - ) - - assertContainsFilePaths( - outputFiles = allHtmlFiles, - 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"), - ) - ) - } - - - @Test - fun `should accept json as input configuration`() { - val dokkaOutputDir = File(projectDir, "output") - assertTrue(dokkaOutputDir.mkdirs()) - val resourcePath = javaClass.getResource("/my-file.json")?.toURI() ?: throw IllegalStateException("No JSON found!") - val jsonPath = File(resourcePath).absolutePath - PrintWriter(jsonPath).run { - write(jsonBuilder(dokkaOutputDir.invariantSeparatorsPath, basePluginJarFile.invariantSeparatorsPath, File(projectDir, "src").invariantSeparatorsPath, reportUndocumented = true)) - close() - } - - val process = ProcessBuilder( - "java", "-jar", cliJarFile.path, jsonPath - ).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") - } - - /** - * This test disables global `reportUndocumneted` property and set `reportUndocumented` via perPackageOptions to - * make sure that global settings apply to dokka context. - */ - @Test - fun `global settings should overwrite package options in configuration`() { - val dokkaOutputDir = File(projectDir, "output") - assertTrue(dokkaOutputDir.mkdirs()) - val resourcePath = javaClass.getResource("/my-file.json")?.toURI() ?: throw IllegalStateException("No JSON found!") - val jsonPath = File(resourcePath).absolutePath - PrintWriter(jsonPath).run { - write( - jsonBuilder( - outputPath = dokkaOutputDir.invariantSeparatorsPath, - pluginsClasspath = basePluginJarFile.invariantSeparatorsPath, - projectPath = File(projectDir, "src").invariantSeparatorsPath, - globalSourceLinks = """ - { - "localDirectory": "/home/Vadim.Mishenev/dokka/examples/cli/src/main/kotlin", - "remoteUrl": "https://github.com/Kotlin/dokka/tree/master/examples/gradle/dokka-gradle-example/src/main/kotlin", - "remoteLineSuffix": "#L" - } - """.trimIndent(), - globalExternalDocumentationLinks = """ - { - "url": "https://docs.oracle.com/javase/8/docs/api/", - "packageListUrl": "https://docs.oracle.com/javase/8/docs/api/package-list" - }, - { - "url": "https://kotlinlang.org/api/latest/jvm/stdlib/", - "packageListUrl": "https://kotlinlang.org/api/latest/jvm/stdlib/package-list" - } - """.trimIndent(), - globalPerPackageOptions = """ - { - "matchingRegex": ".*", - "skipDeprecated": "true", - "reportUndocumented": "true", - "documentedVisibilities": ["PUBLIC", "PRIVATE", "PROTECTED", "INTERNAL", "PACKAGE"] - } - """.trimIndent(), - reportUndocumented = false - ), - ) - close() - } - - val process = ProcessBuilder( - "java", "-jar", cliJarFile.path, jsonPath - ).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") - } -} diff --git a/integration-tests/cli/src/integrationTest/kotlin/org/jetbrains/dokka/it/cli/jsonBuilder.kt b/integration-tests/cli/src/integrationTest/kotlin/org/jetbrains/dokka/it/cli/jsonBuilder.kt deleted file mode 100644 index 093df961..00000000 --- a/integration-tests/cli/src/integrationTest/kotlin/org/jetbrains/dokka/it/cli/jsonBuilder.kt +++ /dev/null @@ -1,56 +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.cli - -fun jsonBuilder( - outputPath: String, - pluginsClasspath: String, - projectPath: String, - globalSourceLinks: String = "", - globalExternalDocumentationLinks: String = "", - globalPerPackageOptions: String = "", - reportUndocumented: Boolean = false - -): String { - return """{ - "moduleName": "Dokka Example", - "moduleVersion": null, - "outputDir": "$outputPath", - "pluginsClasspath": ["$pluginsClasspath"], - "cacheRoot": null, - "offlineMode": false, - "sourceLinks": [$globalSourceLinks], - "externalDocumentationLinks": [$globalExternalDocumentationLinks], - "perPackageOptions": [$globalPerPackageOptions], - "sourceSets": [ - { - "displayName": "jvm", - "sourceSetID": { - "scopeId": ":dokkaHtml", - "sourceSetName": "main" - }, - "sourceRoots": [ - "$projectPath" - ], - "dependentSourceSets": [], - "samples": [], - "includes": [], - "includeNonPublic": false, - "reportUndocumented": $reportUndocumented, - "skipEmptyPackages": true, - "skipDeprecated": false, - "jdkVersion": 8, - "sourceLinks": [], - "perPackageOptions": [], - "externalDocumentationLinks": [], - "noStdlibLink": false, - "noJdkLink": false, - "suppressedFiles": [], - "analysisPlatform": "jvm" - } - ] -} -""" -} diff --git a/integration-tests/cli/src/integrationTest/resources/my-file.json b/integration-tests/cli/src/integrationTest/resources/my-file.json deleted file mode 100644 index e69de29b..00000000 --- a/integration-tests/cli/src/integrationTest/resources/my-file.json +++ /dev/null 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 deleted file mode 100644 index c7c77e68..00000000 --- a/integration-tests/cli/src/main/kotlin/org/jetbrains/dokka/it/cli/AbstractCliIntegrationTest.kt +++ /dev/null @@ -1,40 +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.cli - -import org.jetbrains.dokka.it.AbstractIntegrationTest -import java.io.File -import kotlin.test.BeforeTest -import kotlin.test.assertTrue - -public abstract class AbstractCliIntegrationTest : AbstractIntegrationTest() { - - protected val cliJarFile: File by lazy { - File(tempFolder, "dokka.jar") - } - - protected val basePluginJarFile: File by lazy { - File(tempFolder, "base-plugin.jar") - } - - @BeforeTest - public 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) - } -} |