Skip to content

Commit ebf4090

Browse files
authored
Make sure clean task skips when there is nothing to clean (#339)
Fixes #330 Test: Added a new test
1 parent d121e66 commit ebf4090

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesCleanUpTask.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import org.gradle.api.DefaultTask
2020
import org.gradle.api.file.DirectoryProperty
2121
import org.gradle.api.tasks.InputDirectory
2222
import org.gradle.api.tasks.Optional
23+
import org.gradle.api.tasks.SkipWhenEmpty
2324
import org.gradle.api.tasks.TaskAction
2425
import org.gradle.work.DisableCachingByDefault
2526

@@ -29,6 +30,7 @@ import org.gradle.work.DisableCachingByDefault
2930
@DisableCachingByDefault(because = "Local deletion operation")
3031
abstract class LicensesCleanUpTask extends DefaultTask {
3132
@Optional
33+
@SkipWhenEmpty
3234
@InputDirectory
3335
abstract DirectoryProperty getGeneratedDirectory()
3436

oss-licenses-plugin/src/test/java/com/google/android/gms/oss/licenses/plugin/EndToEndTest.kt

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.google.android.gms.oss.licenses.plugin
33
import org.gradle.testkit.runner.GradleRunner
44
import org.gradle.testkit.runner.TaskOutcome
55
import org.junit.Assert
6+
import org.junit.Before
67
import org.junit.Test
78
import org.junit.rules.TemporaryFolder
89
import org.junit.Rule
@@ -30,9 +31,11 @@ class EndToEndTest(private val agpVersion: String, private val gradleVersion: St
3031

3132
private fun isBuiltInKotlinEnabled() = agpVersion.startsWith("9.")
3233

33-
@Test
34-
fun basic() {
35-
val projectDir = tempDirectory.newFolder("basic")
34+
private lateinit var projectDir: File
35+
36+
@Before
37+
fun setup() {
38+
projectDir = tempDirectory.newFolder("basic")
3639
File(projectDir, "build.gradle").writeText(
3740
"""
3841
plugins {
@@ -70,6 +73,10 @@ class EndToEndTest(private val agpVersion: String, private val gradleVersion: St
7073
}
7174
""".trimIndent()
7275
)
76+
}
77+
78+
@Test
79+
fun basic() {
7380
val result = GradleRunner.create()
7481
.withProjectDir(projectDir)
7582
.withGradleVersion(gradleVersion)
@@ -84,7 +91,26 @@ class EndToEndTest(private val agpVersion: String, private val gradleVersion: St
8491
val metadata =
8592
File(projectDir, "build/generated/resources/releaseOssLicensesTask/raw/third_party_license_metadata")
8693
Assert.assertEquals(expectedContents(isBuiltInKotlinEnabled()), metadata.readText())
94+
95+
val cleanResult = GradleRunner.create()
96+
.withProjectDir(projectDir)
97+
.withGradleVersion(gradleVersion)
98+
.withArguments("clean", "-s")
99+
.build()
100+
Assert.assertFalse(File(projectDir, "build").exists())
101+
Assert.assertEquals(cleanResult.task(":clean")!!.outcome, TaskOutcome.SUCCESS)
87102
}
103+
104+
@Test
105+
fun clean() {
106+
val result = GradleRunner.create()
107+
.withProjectDir(projectDir)
108+
.withGradleVersion(gradleVersion)
109+
.withArguments("clean", "-s")
110+
.build()
111+
Assert.assertEquals(result.task(":clean")!!.outcome, TaskOutcome.UP_TO_DATE)
112+
}
113+
88114
}
89115

90116
private fun expectedDependenciesJson(builtInKotlinEnabled: Boolean) = """[

0 commit comments

Comments
 (0)