Files
openide/plugins/gradle/java/testSources/dsl/GradleExtensionsTest.kt
Sergei Vorobyov 533c1d366e [cleanup] unified Gradle fixture builders
replaced general Gradle project fixture builders by test* functions
removed redundant empty, buildFile and settings fixture builders
removed custom empty Gradle fixture builders

GitOrigin-RevId: 7115432c1acf3093673750d4df28aedc750bdce1
2023-03-10 15:45:30 +00:00

86 lines
3.1 KiB
Kotlin

// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.plugins.gradle.dsl
import com.intellij.psi.CommonClassNames.JAVA_LANG_INTEGER
import com.intellij.testFramework.assertInstanceOf
import org.gradle.util.GradleVersion
import org.jetbrains.plugins.gradle.service.resolve.GradleGroovyProperty
import org.jetbrains.plugins.gradle.testFramework.GradleCodeInsightTestCase
import org.jetbrains.plugins.gradle.testFramework.GradleTestFixtureBuilder
import org.jetbrains.plugins.gradle.testFramework.annotations.AllGradleVersionsSource
import org.jetbrains.plugins.gradle.testFramework.util.withBuildFile
import org.jetbrains.plugins.gradle.testFramework.util.withSettingsFile
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrMethodCallExpression
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod
import org.jetbrains.plugins.groovy.lang.resolve.api.GroovyProperty
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.params.ParameterizedTest
class GradleExtensionsTest : GradleCodeInsightTestCase() {
@ParameterizedTest
@AllGradleVersionsSource
fun `test project level extension property`(gradleVersion: GradleVersion) {
test(gradleVersion, FIXTURE_BUILDER) {
testBuildscript("<caret>ext") {
val ref = elementUnderCaret(GrReferenceExpression::class.java)
assertInstanceOf<GroovyProperty>(ref.resolve())
assertTrue(ref.type!!.equalsToText(getExtraPropertiesExtensionFqn()))
}
}
}
@ParameterizedTest
@AllGradleVersionsSource
fun `test project level extension call type`(gradleVersion: GradleVersion) {
test(gradleVersion, FIXTURE_BUILDER) {
testBuildscript("<caret>ext {}") {
val call = elementUnderCaret(GrMethodCallExpression::class.java)
assertInstanceOf<GrMethod>(call.resolveMethod())
assertTrue(call.type!!.equalsToText(getExtraPropertiesExtensionFqn()))
}
}
}
@ParameterizedTest
@AllGradleVersionsSource
fun `test project level extension closure delegate type`(gradleVersion: GradleVersion) {
test(gradleVersion, FIXTURE_BUILDER) {
testBuildscript("ext { <caret> }") {
closureDelegateTest(getExtraPropertiesExtensionFqn(), 1)
}
}
}
@ParameterizedTest
@AllGradleVersionsSource("""
"<caret>prop",
"project.<caret>prop",
"project.ext.<caret>prop"
""")
fun `test property reference`(gradleVersion: GradleVersion, expression: String) {
test(gradleVersion, FIXTURE_BUILDER) {
testBuildscript(expression) {
referenceExpressionTest(GradleGroovyProperty::class.java, JAVA_LANG_INTEGER)
}
}
}
companion object {
private val FIXTURE_BUILDER = GradleTestFixtureBuilder.create("GradleExtensionsTest") { gradleVersion ->
withSettingsFile {
setProjectName("GradleExtensionsTest")
}
withBuildFile(gradleVersion) {
withPrefix {
call("ext") {
assign("prop", 1)
}
}
}
}
}
}