Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,21 @@ class BuildGradle {
""".trimIndent()


fun getJvm(versions: Versions) = """
fun getJvm(versions: Versions, extension: String) = """
plugins {
kotlin("jvm") version("${versions.kotlin.kgp}") apply false
${jvmPlugin(versions, extension)}
${additionalBuildGradlePlugins(versions)}
}
""".trimIndent()

private fun jvmPlugin(versions: Versions, extension: String): String {
return if (extension == "gradle") {
"id 'org.jetbrains.kotlin.jvm' version '${versions.kotlin.kgp}' apply false"
} else {
"kotlin(\"jvm\") version(\"${versions.kotlin.kgp}\") apply false"
}
}

fun provideKotlinProcessor(versions: Versions) = if (versions.kotlin.kotlinProcessor.processor == Processor.KAPT)
""""""
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,12 @@ class ProjectWriter(
private fun createProjectBuildGradle(
languages: List<LanguageAttributes>
) {
val plugins = if (typeOfProjectRequested == TypeProjectRequested.JVM) BuildGradle().getJvm(versions)
else BuildGradle().getAndroid(versions, versions.di)
languages.forEach {
val plugins = if (typeOfProjectRequested == TypeProjectRequested.JVM) {
BuildGradle().getJvm(versions, it.extension)
} else {
BuildGradle().getAndroid(versions, versions.di)
}
File("${it.projectName}/build.${it.extension}").projectFile(plugins)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,36 @@ class ProjectGeneratorE2ETest {
assert(result.output.contains("BUILD SUCCESSFUL"))
}

@ParameterizedTest
@EnumSource(value = Language::class, names = ["GROOVY", "BOTH"])
fun `jvm groovy projects build`(language: Language) {
val projectRoot = tempDir.resolve("jvm-${language.name.lowercase()}").toFile()
ProjectGenerator(
modules = 6,
shape = Shape.RECTANGLE,
language = language,
typeOfProjectRequested = TypeProjectRequested.JVM,
layers = 5,
gradle = GradleWrapper(LATEST_GRADLE),
projectRootPath = projectRoot.path,
projectName = "jvm-groovy"
).write()

val generatedProjects = if (language == Language.BOTH) {
listOf(File(projectRoot, "project_groovy"), File(projectRoot, "project_kts"))
} else {
listOf(projectRoot)
}
generatedProjects.forEach { generatedProject ->
val result = GradleRunner.create()
.withProjectDir(generatedProject)
.withArguments("build")
.build()

assert(result.output.contains("BUILD SUCCESSFUL"))
}
}

@Test
fun changedVersionReflectsInTomlFile() {
val modules = 30
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,21 @@ import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test

class BuildGradleTest {
@Test
fun `jvm groovy root build file uses groovy plugin syntax`() {
val result = BuildGradle().getJvm(Versions(), "gradle")

assertTrue(result.contains("id 'org.jetbrains.kotlin.jvm' version '${Versions().kotlin.kgp}' apply false"))
assertFalse(result.contains("kotlin(\"jvm\")"))
}

@Test
fun `jvm kotlin root build file uses kotlin plugin syntax`() {
val result = BuildGradle().getJvm(Versions(), "gradle.kts")

assertTrue(result.contains("kotlin(\"jvm\") version(\"${Versions().kotlin.kgp}\") apply false"))
}

@Test
fun `android root build file omits kotlin android plugin for agp9 built in kotlin`() {
val result = BuildGradle().getAndroid(Versions(), Versions().di)
Expand Down
Loading