Skip to content

Commit

Permalink
Disable task caching (#39)
Browse files Browse the repository at this point in the history
* Disable tasks caching

The DevPublish tasks only relocates files. Caching the tasks is wasteful and slow.

* create distinct directory for each test

* test DevPublish does not affect Build Cache
  • Loading branch information
aSemy authored Jul 22, 2024
1 parent 1b6875d commit b4875f3
Show file tree
Hide file tree
Showing 11 changed files with 377 additions and 211 deletions.
2 changes: 1 addition & 1 deletion src/main/kotlin/tasks/BaseDevPublishTask.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.gradle.api.DefaultTask
import org.gradle.work.DisableCachingByDefault

/** Base task type for all [dev.adamko.gradle.dev_publish.DevPublishPlugin] tasks. */
@DisableCachingByDefault
@DisableCachingByDefault(because = "Lifecycle task")
abstract class BaseDevPublishTask
@DevPublishInternalApi constructor() : DefaultTask() {
init {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import org.gradle.api.tasks.TaskAction
import org.gradle.work.DisableCachingByDefault


@DisableCachingByDefault
@DisableCachingByDefault(because = "Always re-compute checksums")
abstract class GeneratePublicationDataChecksumTask
@Inject
@DevPublishInternalApi
Expand Down
3 changes: 2 additions & 1 deletion src/main/kotlin/tasks/UpdateDevRepoTask.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ import org.gradle.api.file.FileSystemOperations
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.*
import org.gradle.api.tasks.PathSensitivity.RELATIVE
import org.gradle.work.DisableCachingByDefault

@CacheableTask
@DisableCachingByDefault(because = "This task only relocates files")
abstract class UpdateDevRepoTask
@Inject
@DevPublishInternalApi
Expand Down
231 changes: 119 additions & 112 deletions src/test/kotlin/ApiPropagationTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -44,138 +44,145 @@ class ApiPropagationTest : FunSpec({
}) {
companion object {

private fun TestScope.project() = gradleKtsProjectTest(testCase.name.testName.replaceNonAlphaNumeric()) {
private fun TestScope.project() =
gradleKtsProjectTest(
projectName = "multi-module project",
testProjectPath = testCase.descriptor.slashSeparatedPath(),
) {

settingsGradleKts += """
include(
":project-kotlin-lib1",
":project-kotlin-lib2",
":project-kotlin-app",
":project-aggregate",
)
""".trimIndent()

buildGradleKts = """
plugins {
kotlin("jvm") version embeddedKotlinVersion apply false
}
""".trimIndent()
settingsGradleKts += """
include(
":project-kotlin-lib1",
":project-kotlin-lib2",
":project-kotlin-app",
":project-aggregate",
)
""".trimIndent()

dir("project-kotlin-lib1") {
buildGradleKts = """
plugins {
kotlin("jvm")
id("dev.adamko.dev-publish") version "+"
`maven-publish`
}
group = "project.kotlin.lib1"
version = "1.2.3"
publishing {
publications {
create<MavenPublication>("mavenJava") {
from(components["java"])
}
plugins {
kotlin("jvm") version embeddedKotlinVersion apply false
}
}
""".trimIndent()

createKotlinFile(
"src/main/kotlin/KotlinLib1Class.kt", """
class KotlinLib1Class {
fun name() = "project.kotlin.lib1"
dir("project-kotlin-lib1") {
buildGradleKts = """
plugins {
kotlin("jvm")
id("dev.adamko.dev-publish") version "+"
`maven-publish`
}
group = "project.kotlin.lib1"
version = "1.2.3"
publishing {
publications {
create<MavenPublication>("mavenJava") {
from(components["java"])
}
}
}
""".trimIndent()
)
}

dir("project-kotlin-lib2") {
buildGradleKts = """
plugins {
kotlin("jvm")
id("dev.adamko.dev-publish") version "+"
`maven-publish`
}
dependencies {
devPublicationApi(project(":project-kotlin-lib1"))
}
group = "project.kotlin.lib2"
version = "9.0.1"
publishing {
publications {
create<MavenPublication>("mavenJava") {
from(components["java"])
createKotlinFile(
"src/main/kotlin/KotlinLib1Class.kt",
"""
class KotlinLib1Class {
fun name() = "project.kotlin.lib1"
}
}
}
""".trimIndent()
""".trimIndent()
)
}

createKotlinFile(
"src/main/kotlin/KotlinLib2Class.kt", """
class KotlinLib2Class {
fun name() = "project.kotlin.lib2"
dir("project-kotlin-lib2") {
buildGradleKts = """
plugins {
kotlin("jvm")
id("dev.adamko.dev-publish") version "+"
`maven-publish`
}
dependencies {
devPublicationApi(project(":project-kotlin-lib1"))
}
group = "project.kotlin.lib2"
version = "9.0.1"
publishing {
publications {
create<MavenPublication>("mavenJava") {
from(components["java"])
}
}
}
""".trimIndent()
)
}

dir("project-kotlin-app") {
buildGradleKts = """
plugins {
kotlin("jvm")
id("dev.adamko.dev-publish") version "+"
`maven-publish`
}
group = "project.kotlin.app"
version = "9.9.9"
dependencies {
implementation(project(":project-kotlin-lib1"))
implementation(project(":project-kotlin-lib2"))
// don't need lib1 dependency, it's exposed as api() by lib2
//devPublication(project(":project-kotlin-lib1"))
devPublicationApi(project(":project-kotlin-lib2"))
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
from(components["java"])
createKotlinFile(
"src/main/kotlin/KotlinLib2Class.kt",
"""
class KotlinLib2Class {
fun name() = "project.kotlin.lib2"
}
}
}
""".trimIndent()
""".trimIndent()
)
}

createKotlinFile(
"src/main/kotlin/KotlinNoDevPublishClass.kt", """
class KotlinApp {
fun app() = "x"
dir("project-kotlin-app") {
buildGradleKts = """
plugins {
kotlin("jvm")
id("dev.adamko.dev-publish") version "+"
`maven-publish`
}
group = "project.kotlin.app"
version = "9.9.9"
dependencies {
implementation(project(":project-kotlin-lib1"))
implementation(project(":project-kotlin-lib2"))
// don't need lib1 dependency, it's exposed as api() by lib2
//devPublication(project(":project-kotlin-lib1"))
devPublicationApi(project(":project-kotlin-lib2"))
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
from(components["java"])
}
}
}
""".trimIndent()
)
}

dir("project-aggregate") {
buildGradleKts = """
plugins {
id("dev.adamko.dev-publish") version "+"
}
group = "project.kotlin.aggregate"
dependencies {
devPublication(project(":project-kotlin-app"))
}
""".trimIndent()
createKotlinFile(
"src/main/kotlin/KotlinNoDevPublishClass.kt",
"""
class KotlinApp {
fun app() = "x"
}
""".trimIndent()
)
}

dir("project-aggregate") {
buildGradleKts = """
plugins {
id("dev.adamko.dev-publish") version "+"
}
group = "project.kotlin.aggregate"
dependencies {
devPublication(project(":project-kotlin-app"))
}
""".trimIndent()
}
}
}

@Language("TEXT")
private val ExpectedDevRepoTree = """
Expand Down
Loading

0 comments on commit b4875f3

Please sign in to comment.