Files
openide/plugins/gradle/java/testSources/execution/GradleGroovyScriptRunConfigurationProducerTest.kt
Nikita Biriukov 9f6fda9531 [gradle][groovy] IDEA-315327 add the run button for tasks.named(...)
GitOrigin-RevId: 01e3843e78950b2b940a172ab7b6dc59f8d1a038
2024-03-15 16:16:13 +00:00

112 lines
4.6 KiB
Kotlin

// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.plugins.gradle.execution
import org.jetbrains.plugins.gradle.testFramework.util.createBuildFile
import org.jetbrains.plugins.gradle.tooling.annotation.TargetVersions
import org.junit.Test
class GradleGroovyScriptRunConfigurationProducerTest : GradleGroovyScriptRunConfigurationProducerTestCase() {
@Test
fun `test base task declarations`() {
val declaredWithMethods = listOf(
DeclarationWithMethod(methodCall = "tasks.create", taskName = "nameTasksCreate"),
DeclarationWithMethod(methodCall = "getTasks().create", taskName = "nameGetTasksCreate"),
DeclarationWithMethod(methodCall = "project.tasks.create", taskName = "nameProjectTasksCreate"),
DeclarationWithMethod(methodCall = "getProject().getTasks().create", taskName = "nameGetProjectGetTasksCreate"),
DeclarationWithMethod(methodCall = "myTasks.create", taskName = "nameMyTasksCreate"),
DeclarationWithMethod(methodCall = "project.task", taskName = "nameProjectTask"),
DeclarationWithMethod(methodCall = "getProject().task", taskName = "nameGetProjectTask"),
DeclarationWithMethod(methodCall = "myProject.task", taskName = "nameMyProjectTask"),
)
val taskNameNoParentheses = "nameTaskNoParentheses"
val buildFile = createBuildFile {
withPostfix {
code("def myProject = getProject()")
code("def myTasks = myProject.getTasks()")
for ((methodCall, taskName) in declaredWithMethods) {
call(methodCall, taskName) {
call("doFirst") {
call("println", "$taskName task created with $methodCall")
}
}
}
call("task $taskNameNoParentheses") {
call("doFirst") {
call("println('$taskNameNoParentheses task created as task taskName')")
}
}
}
}
importProject()
val expectedTaskNames = declaredWithMethods
.map(DeclarationWithMethod::taskName)
.toMutableSet()
.apply { add(taskNameNoParentheses) }
val taskDataMap = getTaskData(buildFile)
assertAllTasksHaveConfiguration(expectedTaskNames, taskDataMap)
}
@Test
@TargetVersions("4.9+")
fun `test tasks registering`() {
val declaredWithMethods = listOf(
DeclarationWithMethod(methodCall = "tasks.register", taskName = "nameTasksRegister"),
DeclarationWithMethod(methodCall = "getTasks().register", taskName = "nameGetTasksRegister"),
DeclarationWithMethod(methodCall = "project.tasks.register", taskName = "nameProjectTasksRegister"),
DeclarationWithMethod(methodCall = "myProject.getTasks().register", taskName = "nameVarProjectGetTasksRegister"),
DeclarationWithMethod(methodCall = "myTasks.register", taskName = "nameVarTasksRegister"),
)
val buildFile = createBuildFile {
withPostfix {
code("def myProject = getProject()")
code("def myTasks = myProject.getTasks()")
for ((methodCall, taskName) in declaredWithMethods) {
call(methodCall, taskName) {
call("doFirst") {
call("println", "$taskName task created with $methodCall")
}
}
}
}
}
importProject()
val taskDataMap = getTaskData(buildFile)
val expectedTaskNames = declaredWithMethods.map(DeclarationWithMethod::taskName).toSet()
assertAllTasksHaveConfiguration(expectedTaskNames, taskDataMap)
}
@Test
@TargetVersions("5.0+")
fun `test tasks named`() {
val declaredWithMethods = listOf(
DeclarationWithMethod(methodCall = "tasks.named", taskName = "taskForNamed"),
DeclarationWithMethod(methodCall = "getTasks().named", taskName = "taskForNamed"),
DeclarationWithMethod(methodCall = "project.tasks.named", taskName = "taskForNamed"),
DeclarationWithMethod(methodCall = "myProject.getTasks().named", taskName = "taskForNamed"),
DeclarationWithMethod(methodCall = "myTasks.named", taskName = "taskForNamed"),
)
val buildFile = createBuildFile {
withPostfix {
code("def myProject = getProject()")
code("def myTasks = myProject.getTasks()")
withTask("taskForNamed")
for ((methodCall, taskName) in declaredWithMethods) {
call(methodCall, taskName) {
call("doFirst") {
call("println", "$taskName task configured with $methodCall")
}
}
}
}
}
importProject()
val taskDataMap = getTaskData(buildFile)
val expectedTaskNames = declaredWithMethods.map(DeclarationWithMethod::taskName).toSet()
assertAllTasksHaveConfiguration(expectedTaskNames, taskDataMap)
}
}