Skip to content

Commit 8e2bef5

Browse files
authored
Add test for generated file (#145)
1 parent 4e9540e commit 8e2bef5

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

plugin-build/plugin/src/test/java/com/ncorti/kotlin/gradle/template/plugin/TemplatePluginTest.kt

+50
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
package com.ncorti.kotlin.gradle.template.plugin
22

33
import org.gradle.testfixtures.ProjectBuilder
4+
import org.gradle.testkit.runner.BuildResult
5+
import org.gradle.testkit.runner.GradleRunner
46
import org.junit.Assert.assertEquals
57
import org.junit.Assert.assertNotNull
8+
import org.junit.Rule
69
import org.junit.Test
10+
import org.junit.rules.TemporaryFolder
711
import java.io.File
812

913
class TemplatePluginTest {
14+
@JvmField
15+
@Rule
16+
var testProjectDir: TemporaryFolder = TemporaryFolder()
17+
1018
@Test
1119
fun `plugin is applied correctly to the project`() {
1220
val project = ProjectBuilder.builder().build()
@@ -40,4 +48,46 @@ class TemplatePluginTest {
4048
assertEquals("just-a-message", task.message.get())
4149
assertEquals(aFile, task.outputFile.get().asFile)
4250
}
51+
52+
@Test
53+
fun `task generates file with message`() {
54+
val message = "Just trying this gradle plugin..."
55+
testProjectDir.root.removeRecursively()
56+
File(testProjectDir.root, "build.gradle")
57+
.writeText(
58+
generateBuildFile("message.set(\"$message\")\ntag.set(\"tag\")"),
59+
)
60+
61+
val gradleResult = executeGradleRun("templateExample")
62+
assert(gradleResult.output.contains("message is: $message"))
63+
64+
val generatedFileText = (testProjectDir.root / "build" / "template-example.txt").readText()
65+
assert(generatedFileText == "[tag] $message")
66+
}
67+
68+
private fun executeGradleRun(task: String): BuildResult =
69+
GradleRunner
70+
.create()
71+
.withProjectDir(testProjectDir.root)
72+
.withArguments(task)
73+
.withPluginClasspath()
74+
.build()
75+
76+
private fun generateBuildFile(config: String) =
77+
"""
78+
plugins {
79+
id 'com.ncorti.kotlin.gradle.template.plugin'
80+
}
81+
templateExampleConfig {
82+
$config
83+
}
84+
""".trimIndent()
4385
}
86+
87+
private fun File.removeRecursively() =
88+
this
89+
.walkBottomUp()
90+
.filter { it != this }
91+
.forEach { it.deleteRecursively() }
92+
93+
private operator fun File.div(s: String): File = this.resolve(s)

0 commit comments

Comments
 (0)