diff --git a/CHANGELOG.md b/CHANGELOG.md index 42869528bc..87e66205df 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Added +- Fix Gradle configuration cache warnings in `JarSearchableOptionsTask` & `PrepareJarSearchableOptionsTask` - Added `PrepareSandboxTask.pluginName` for easier accessing of the plugin directory name - Allow for using non-installer IDEs for plugin verification [#1715](../../issues/1715) - Added `bundledModule()` dependency extension helpers diff --git a/src/test/kotlin/org/jetbrains/intellij/platform/gradle/tasks/BuildSearchableOptionsTaskTest.kt b/src/test/kotlin/org/jetbrains/intellij/platform/gradle/tasks/BuildSearchableOptionsTaskTest.kt index 1b3c41de8f..e3f7fbe596 100644 --- a/src/test/kotlin/org/jetbrains/intellij/platform/gradle/tasks/BuildSearchableOptionsTaskTest.kt +++ b/src/test/kotlin/org/jetbrains/intellij/platform/gradle/tasks/BuildSearchableOptionsTaskTest.kt @@ -51,4 +51,59 @@ class BuildSearchableOptionsTaskTest : SearchableOptionsTestBase() { assertTaskOutcome(Tasks.JAR_SEARCHABLE_OPTIONS, TaskOutcome.SKIPPED) } } + + @Test + fun `build searchable options produces XML if enabled via property and explicitly configured`() { + pluginXml write getPluginXmlWithSearchableConfigurable() + + getTestSearchableConfigurableJava() write getSearchableConfigurableCode() + + gradleProperties write //language=properties + """ + org.jetbrains.intellij.platform.buildSearchableOptions = true + """.trimIndent() + + + buildFile write //language=kotlin + """ + intellijPlatform { + buildSearchableOptions = true + } + """.trimIndent() + + build(Tasks.BUILD_SEARCHABLE_OPTIONS) { + assertContains("Searchable options index builder completed", output) + } + + val xml = buildDirectory.resolve("tmp/${Tasks.BUILD_SEARCHABLE_OPTIONS}/projectName-1.0.0.jar/search/projectName-1.0.0.jar.searchableOptions.xml") + assertExists(xml) + + xml.readText().let { + assertContains("", it) + assertContains("hit=\"Label for Test Searchable Configurable\"", it) + } + } + + @Test + fun `skip build searchable options if disabled via property and explicitly configured`() { + + gradleProperties write //language=properties + """ + org.jetbrains.intellij.platform.buildSearchableOptions = false + """.trimIndent() + + buildFile write //language=kotlin + """ + intellijPlatform { + buildSearchableOptions = providers.gradleProperty("org.jetbrains.intellij.platform.buildSearchableOptions").map { + it.toBoolean() + } + } + """.trimIndent() + + build(Tasks.BUILD_PLUGIN) { + assertTaskOutcome(Tasks.BUILD_SEARCHABLE_OPTIONS, TaskOutcome.SKIPPED) + assertTaskOutcome(Tasks.JAR_SEARCHABLE_OPTIONS, TaskOutcome.SKIPPED) + } + } } diff --git a/src/test/kotlin/org/jetbrains/intellij/platform/gradle/tasks/JarSearchableOptionsTaskTest.kt b/src/test/kotlin/org/jetbrains/intellij/platform/gradle/tasks/JarSearchableOptionsTaskTest.kt index c5765737ee..70ff722f2a 100644 --- a/src/test/kotlin/org/jetbrains/intellij/platform/gradle/tasks/JarSearchableOptionsTaskTest.kt +++ b/src/test/kotlin/org/jetbrains/intellij/platform/gradle/tasks/JarSearchableOptionsTaskTest.kt @@ -29,4 +29,60 @@ class JarSearchableOptionsTaskTest : SearchableOptionsTestBase() { assertEquals(setOf("projectName-1.0.0-searchableOptions.jar", "projectName-1.0.0-base.jar", "projectName-1.0.0.jar"), collectPaths(it)) } } + + @Test + fun `jar searchable options produces archive if enabled via property and explicitly configured`() { + pluginXml write getPluginXmlWithSearchableConfigurable() + + gradleProperties write //language=properties + """ + org.jetbrains.intellij.platform.buildSearchableOptions = true + """.trimIndent() + + buildFile write //language=kotlin + """ + intellijPlatform { + buildSearchableOptions = providers.gradleProperty("org.jetbrains.intellij.platform.buildSearchableOptions").map { + it.toBoolean() + } + } + """.trimIndent() + + getTestSearchableConfigurableJava() write getSearchableConfigurableCode() + + build(Tasks.JAR_SEARCHABLE_OPTIONS) + + buildDirectory.resolve("libs").let { + assertExists(it) + assertEquals(setOf("projectName-1.0.0-searchableOptions.jar", "projectName-1.0.0-base.jar", "projectName-1.0.0.jar"), collectPaths(it)) + } + } + + @Test + fun `jar searchable options disabled via property and explicitly configured`() { + pluginXml write getPluginXmlWithSearchableConfigurable() + + gradleProperties write //language=properties + """ + org.jetbrains.intellij.platform.buildSearchableOptions = false + """.trimIndent() + + buildFile write //language=kotlin + """ + intellijPlatform { + buildSearchableOptions = providers.gradleProperty("org.jetbrains.intellij.platform.buildSearchableOptions").map { + it.toBoolean() + } + } + """.trimIndent() + + getTestSearchableConfigurableJava() write getSearchableConfigurableCode() + + build(Tasks.JAR_SEARCHABLE_OPTIONS) + + buildDirectory.resolve("libs").let { + assertExists(it) + assertEquals(setOf("projectName-1.0.0-base.jar", "projectName-1.0.0.jar"), collectPaths(it)) + } + } }