diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3344f53..f0b3225 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,6 +18,8 @@ jobs: - uses: actions/checkout@v3 + - uses: gradle/wrapper-validation-action@v1 + - uses: gradle/gradle-build-action@v2 with: gradle-version: ${{ matrix.gradle-version }} diff --git a/build.gradle.kts b/build.gradle.kts index da03d4a..4d8d309 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,21 +14,21 @@ plugins { } val setupPluginUpload by tasks.registering { - if (System.getenv("GITHUB_ACTION") == null) return@registering + if (!providers.environmentVariable("GITHUB_ACTION").isPresent) return@registering - val key = System.getenv(GRADLE_PUBLISH_KEY_ENV) ?: System.getProperty(GRADLE_PUBLISH_KEY) - val secret = System.getenv(GRADLE_PUBLISH_SECRET_ENV) ?: System.getProperty(GRADLE_PUBLISH_SECRET) + val key = providers.environmentVariable(GRADLE_PUBLISH_KEY_ENV) + .orElse(providers.systemProperty(GRADLE_PUBLISH_KEY)) - if (key == null || secret == null) { - error("GRADLE_PUBLISH_KEY and/or GRADLE_PUBLISH_SECRET are not defined environment variables") - } + val secret = providers.environmentVariable(GRADLE_PUBLISH_SECRET_ENV) + .orElse(providers.systemProperty(GRADLE_PUBLISH_SECRET)) - System.setProperty(GRADLE_PUBLISH_KEY, key) - System.setProperty(GRADLE_PUBLISH_SECRET, secret) + if (!key.isPresent || !secret.isPresent) { + error("GRADLE_PUBLISH_KEY and/or GRADLE_PUBLISH_SECRET are not defined environment or system variables") + } // This is the git tag for a release - val githubRefName = System.getenv("GITHUB_REF_NAME")?.trimStart('v') - version = checkNotNull(githubRefName) { "No GITHUB_REF_NAME env value defined" } + val githubRefName = providers.environmentVariable("GITHUB_REF_NAME").map { it.trimStart('v') } + version = checkNotNull(githubRefName.orNull) { "No GITHUB_REF_NAME env value defined" } } tasks.named("publishPlugins") { @@ -72,6 +72,7 @@ dependencies { val kotlinVersion = "1.6.21" implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion") + implementation("org.jetbrains.kotlin:kotlin-gradle-plugin-api:$kotlinVersion") testCompileOnly("org.jetbrains:annotations:24.0.1") @@ -101,7 +102,7 @@ detekt { autoCorrect = true buildUponDefaultConfig = true // preconfigure defaults - config.from("$rootDir/config/detekt-config.yml") + config.from("$rootDir/detekt.yaml") allRules = false // activate all available (even unstable) rules. } diff --git a/config/detekt-config.yml b/detekt.yaml similarity index 100% rename from config/detekt-config.yml rename to detekt.yaml diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..5581b6c --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.configuration-cache=true +org.gradle.caching=true diff --git a/src/test/kotlin/org/assertj/generator/gradle/AssertExtensions.kt b/src/test/kotlin/org/assertj/generator/gradle/AssertExtensions.kt index 1576f18..1d76985 100644 --- a/src/test/kotlin/org/assertj/generator/gradle/AssertExtensions.kt +++ b/src/test/kotlin/org/assertj/generator/gradle/AssertExtensions.kt @@ -3,11 +3,22 @@ package org.assertj.generator.gradle import org.assertj.core.api.AbstractObjectAssert import org.gradle.testkit.runner.BuildTask import org.gradle.testkit.runner.TaskOutcome +import org.gradle.testkit.runner.TaskOutcome.FROM_CACHE +import org.gradle.testkit.runner.TaskOutcome.SUCCESS +import org.gradle.testkit.runner.TaskOutcome.UP_TO_DATE -internal fun > SELF.isSuccessful(): SELF = isOutcome(TaskOutcome.SUCCESS) -internal fun > SELF.isUpToDate(): SELF = isOutcome(TaskOutcome.UP_TO_DATE) +internal fun > SELF.isSuccessful(): SELF = isOutcome(SUCCESS) -private fun > SELF.isOutcome(outcome: TaskOutcome): SELF { - extracting { it?.outcome }.`as` { "task.outcome == $outcome" }.isEqualTo(outcome) +internal fun > SELF.isSuccessOrCached(): SELF = isOutcome( + SUCCESS, + FROM_CACHE +) + +internal fun > SELF.isUpToDate(): SELF = isOutcome(UP_TO_DATE) + +private fun > SELF.isOutcome(vararg outcomes: TaskOutcome): SELF { + extracting { it?.outcome } + .`as` { "task.outcome in { ${outcomes.joinToString(", ")} }" } + .isIn(outcomes.toSet()) return this } diff --git a/src/test/kotlin/org/assertj/generator/gradle/IncrementalBuild.kt b/src/test/kotlin/org/assertj/generator/gradle/IncrementalBuild.kt index 943b506..7f53f9c 100644 --- a/src/test/kotlin/org/assertj/generator/gradle/IncrementalBuild.kt +++ b/src/test/kotlin/org/assertj/generator/gradle/IncrementalBuild.kt @@ -43,8 +43,8 @@ internal class IncrementalBuild { val firstBuild = buildRunner.build() - assertThat(firstBuild.task(":generateAssertJ")).isSuccessful() - assertThat(firstBuild.task(":test")).isSuccessful() + assertThat(firstBuild.task(":generateAssertJ")).isSuccessOrCached() + assertThat(firstBuild.task(":test")).isSuccessOrCached() root.assertFiles() @@ -65,8 +65,8 @@ internal class IncrementalBuild { val firstBuild = buildRunner.build() - assertThat(firstBuild.task(":generateAssertJ")).isSuccessful() - assertThat(firstBuild.task(":test")).isSuccessful() + assertThat(firstBuild.task(":generateAssertJ")).isSuccessOrCached() + assertThat(firstBuild.task(":test")).isSuccessOrCached() // get files root.assertFiles() diff --git a/src/test/kotlin/org/assertj/generator/gradle/SimpleBuild.kt b/src/test/kotlin/org/assertj/generator/gradle/SimpleBuild.kt index 62b224e..d941cee 100644 --- a/src/test/kotlin/org/assertj/generator/gradle/SimpleBuild.kt +++ b/src/test/kotlin/org/assertj/generator/gradle/SimpleBuild.kt @@ -38,8 +38,8 @@ internal class SimpleBuild { val result = runner.withArguments("-i", "-s", "test").build() - assertThat(result.task(":generateAssertJ")).isSuccessful() - assertThat(result.task(":test")).isSuccessful() + assertThat(result.task(":generateAssertJ")).isSuccessOrCached() + assertThat(result.task(":test")).isSuccessOrCached() } @Test @@ -62,8 +62,8 @@ internal class SimpleBuild { val result = runner.withArguments("-i", "-s", "test").build() - assertThat(result.task(":generateAssertJ")).isSuccessful() - assertThat(result.task(":test")).isSuccessful() + assertThat(result.task(":generateAssertJ")).isSuccessOrCached() + assertThat(result.task(":test")).isSuccessOrCached() val packagePath = root.toPath() .resolve("build/generated-src/main-test/java") diff --git a/src/test/kotlin/org/assertj/generator/gradle/SkipPackageInfo.kt b/src/test/kotlin/org/assertj/generator/gradle/SkipPackageInfo.kt index 1f20f31..1f63f14 100644 --- a/src/test/kotlin/org/assertj/generator/gradle/SkipPackageInfo.kt +++ b/src/test/kotlin/org/assertj/generator/gradle/SkipPackageInfo.kt @@ -28,7 +28,7 @@ internal class SkipPackageInfo { .resolve("org/example") @Test - @GradleProject("simple-build") + @GradleProject("skip-package-info") fun `does not include package info file`( @GradleProject.Root root: File, @GradleProject.Runner runner: GradleRunner, diff --git a/src/test/projects/incremental-build/gradle.properties b/src/test/projects/incremental-build/gradle.properties new file mode 100644 index 0000000..5581b6c --- /dev/null +++ b/src/test/projects/incremental-build/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.configuration-cache=true +org.gradle.caching=true diff --git a/src/test/projects/simple-build/gradle.properties b/src/test/projects/simple-build/gradle.properties new file mode 100644 index 0000000..5581b6c --- /dev/null +++ b/src/test/projects/simple-build/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.configuration-cache=true +org.gradle.caching=true