Skip to content

Test improvements #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Mar 3, 2023
Merged
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
12 changes: 11 additions & 1 deletion .github/workflows/gradle_task.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,20 @@ jobs:
distribution: temurin
java-version: 11

- name: Cache Gradle TestKit
id: cache-gradle-testkit
uses: actions/cache@v3
with:
path: |
${{ runner.temp }}/.gradle-test-kit/caches
key: gradle-testkit-${{ runner.os }}

- uses: gradle/gradle-build-action@v2
env:
GRADLE_TESTKIT_DIR: ${{ runner.temp }}/.gradle-test-kit/caches
with:
gradle-home-cache-cleanup: true
arguments: ${{ inputs.gradle-task }}
arguments: ${{ inputs.gradle-task }} --scan

- name: Upload build reports
if: failure()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,12 @@ testing.suites {
}
}
}

tasks.withType<Test>().configureEach {
// Help speed up TestKit tests by re-using dependencies cache
// https://docs.gradle.org/current/userguide/dependency_resolution.html#sub:shared-readonly-cache
environment("GRADLE_RO_DEP_CACHE", gradle.gradleUserHomeDir.resolve("caches"))
providers.environmentVariable("GRADLE_TESTKIT_DIR").orNull?.let {
systemProperty("gradleTestKitDir", it)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import org.gradle.testkit.runner.TaskOutcome.SUCCESS
import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Test

@Disabled("Leftovers after revert of #94")
@Disabled("Leftovers after revert of https://github.com/Kotlin/binary-compatibility-validator/issues/94")
internal class AndroidLibraryTest : BaseKotlinGradleTest() {

// region Kotlin Android Library
Expand All @@ -25,7 +25,7 @@ internal class AndroidLibraryTest : BaseKotlinGradleTest() {
}

runner.build {
task(":kotlin-library:apiDump") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":kotlin-library:apiDump", SUCCESS)
}
}

Expand All @@ -38,7 +38,7 @@ internal class AndroidLibraryTest : BaseKotlinGradleTest() {
arguments.add(":kotlin-library:apiCheck")
}
}.build {
task(":kotlin-library:apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":kotlin-library:apiCheck", SUCCESS)
}
}

Expand All @@ -58,7 +58,7 @@ internal class AndroidLibraryTest : BaseKotlinGradleTest() {
}

runner.build {
task(":java-library:apiDump") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":java-library:apiDump", SUCCESS)
}
}

Expand All @@ -71,7 +71,7 @@ internal class AndroidLibraryTest : BaseKotlinGradleTest() {
arguments.add(":java-library:apiCheck")
}
}.build {
task(":java-library:apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":java-library:apiCheck", SUCCESS)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ internal class DefaultConfigTests : BaseKotlinGradleTest() {

runner.buildAndFail {
output shouldContain "Please ensure that task ':apiDump' was executed"
task(":apiCheck") shouldHaveOutcome FAILED
shouldHaveRunTask(":apiCheck", FAILED)
}
}

Expand All @@ -43,7 +43,7 @@ internal class DefaultConfigTests : BaseKotlinGradleTest() {
}

runner.buildAndFail {
task(":apiCheck") shouldHaveOutcome FAILED
shouldHaveRunTask(":apiCheck", FAILED)
shouldNotHaveRunTask(":check") // apiCheck fails before we can run check
}
}
Expand All @@ -63,7 +63,7 @@ internal class DefaultConfigTests : BaseKotlinGradleTest() {
}

runner.build {
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiCheck", SUCCESS)
}
}

Expand All @@ -86,7 +86,7 @@ internal class DefaultConfigTests : BaseKotlinGradleTest() {
}

runner.build {
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiCheck", SUCCESS)
}
}

Expand All @@ -109,7 +109,7 @@ internal class DefaultConfigTests : BaseKotlinGradleTest() {
}

runner.build {
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiCheck", SUCCESS)
}
}

Expand All @@ -132,7 +132,7 @@ internal class DefaultConfigTests : BaseKotlinGradleTest() {
}

runner.buildAndFail {
task(":apiCheck") shouldHaveOutcome FAILED
shouldHaveRunTask(":apiCheck", FAILED)

// note that tabs are used as function indents!
val dumpOutput = /*language=TEXT*/ """
Expand Down Expand Up @@ -160,7 +160,7 @@ internal class DefaultConfigTests : BaseKotlinGradleTest() {
}

runner.build {
task(":apiDump") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiDump", SUCCESS)

assertTrue(
rootProjectApiDump.exists(),
Expand All @@ -187,7 +187,7 @@ internal class DefaultConfigTests : BaseKotlinGradleTest() {
}

runner.build {
task(":apiDump") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiDump", SUCCESS)

val apiDumpFile = rootProjectDir.resolve("api/testproject.api")
assertTrue(apiDumpFile.exists(), "api dump file ${apiDumpFile.path} should exist")
Expand Down Expand Up @@ -217,7 +217,7 @@ internal class DefaultConfigTests : BaseKotlinGradleTest() {
}

runner.build {
task(":apiDump") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiDump", SUCCESS)

assertTrue(rootProjectApiDump.exists(), "api dump file should exist")

Expand All @@ -242,8 +242,8 @@ internal class DefaultConfigTests : BaseKotlinGradleTest() {
}

runner.build {
task(":check") shouldHaveOutcome SUCCESS
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":check", SUCCESS)
shouldHaveRunTask(":apiCheck", SUCCESS)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package kotlinx.validation.test

import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.*
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.build
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveOutcome
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveRunTask
import io.kotest.matchers.comparables.shouldBeEqualComparingTo
import org.gradle.testkit.runner.TaskOutcome.SUCCESS
import org.junit.jupiter.api.Assertions.assertTrue
Expand Down Expand Up @@ -30,7 +30,7 @@ internal class IgnoredClassesTests : BaseKotlinGradleTest() {
}

runner.build {
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiCheck", SUCCESS)
}
}

Expand All @@ -54,7 +54,7 @@ internal class IgnoredClassesTests : BaseKotlinGradleTest() {
}

runner.build {
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiCheck", SUCCESS)
}
}

Expand All @@ -78,7 +78,7 @@ internal class IgnoredClassesTests : BaseKotlinGradleTest() {
}

runner.build {
task(":apiDump") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiDump", SUCCESS)

assertTrue(rootProjectApiDump.exists(), "api dump file should exist")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package kotlinx.validation.test

import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.*
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.build
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveOutcome
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveRunTask
import org.gradle.testkit.runner.TaskOutcome.SUCCESS
import org.junit.jupiter.api.Test

Expand Down Expand Up @@ -30,8 +30,8 @@ class InputJarTest : BaseKotlinGradleTest() {
}

runner.build {
task(":jar") shouldHaveOutcome SUCCESS
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":jar", SUCCESS)
shouldHaveRunTask(":apiCheck", SUCCESS)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class JavaTestFixturesTest : FunSpec({
test("expect :apiDump task passes") {
project.runner.withArguments("apiDump").build {
withClue(output) {
task(":apiDump") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiDump", SUCCESS)
}
}
}
Expand All @@ -36,7 +36,7 @@ class JavaTestFixturesTest : FunSpec({
)
.build {
withClue(output) {
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiCheck", SUCCESS)
}
}
}
Expand Down Expand Up @@ -74,7 +74,7 @@ class JavaTestFixturesTest : FunSpec({
test("expect :apiDump task passes") {
project.runner.withArguments("apiDump").build {
withClue(output) {
task(":apiDump") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiDump", SUCCESS)
}
}
}
Expand All @@ -88,7 +88,7 @@ class JavaTestFixturesTest : FunSpec({
)
.build {
withClue(output) {
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiCheck", SUCCESS)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ package kotlinx.validation.test
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.*
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.*
import io.kotest.assertions.withClue
import io.kotest.matchers.comparables.shouldBeEqualComparingTo
import io.kotest.matchers.file.shouldBeAFile
import io.kotest.matchers.shouldBe
import io.kotest.matchers.string.shouldContain
import java.io.File
import org.gradle.testkit.runner.TaskOutcome.FAILED
Expand Down Expand Up @@ -46,7 +47,7 @@ internal class MultiPlatformSingleJvmTargetTest : BaseKotlinGradleTest() {
}

runner.build {
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiCheck", SUCCESS)
}
}

Expand Down Expand Up @@ -119,7 +120,7 @@ internal class MultiPlatformSingleJvmTargetTest : BaseKotlinGradleTest() {
}

runner.build {
task(":apiDump") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiDump", SUCCESS)

val mainExpectedApi = """
|${readResourceFile("/examples/classes/Subsub1Class.dump").trim()}
Expand All @@ -129,9 +130,8 @@ internal class MultiPlatformSingleJvmTargetTest : BaseKotlinGradleTest() {
|
""".trimMargin()

val actual = jvmApiDump.readText().invariantNewlines()

actual.shouldBeEqualComparingTo(mainExpectedApi)
jvmApiDump.shouldBeAFile()
jvmApiDump.readText().invariantNewlines() shouldBe mainExpectedApi
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ internal class MultipleJvmTargetsTest : BaseKotlinGradleTest() {
}

runner.build {
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveRunTask(":apiCheck", SUCCESS)
}
}

Expand Down Expand Up @@ -92,7 +92,7 @@ internal class MultipleJvmTargetsTest : BaseKotlinGradleTest() {

runner.buildAndFail {
withClue(output) {
shouldHaveRunTask(":apiCheck") shouldHaveOutcome FAILED
shouldHaveRunTask(":apiCheck", FAILED)
output shouldContain "API check failed for project :testproject"
shouldNotHaveRunTask(":check")
}
Expand All @@ -118,22 +118,21 @@ internal class MultipleJvmTargetsTest : BaseKotlinGradleTest() {

}
runner.build {
task(":apiDump") shouldHaveOutcome SUCCESS

System.err.println(output)
withClue(output) {
shouldHaveRunTask(":apiDump", SUCCESS)

val anotherExpectedApi = readResourceFile("/examples/classes/Subsub1Class.dump")
anotherApiDump.shouldBeAFile()
anotherApiDump.readText().invariantNewlines().shouldBe(anotherExpectedApi)
val anotherExpectedApi = readResourceFile("/examples/classes/Subsub1Class.dump")
anotherApiDump.shouldBeAFile()
anotherApiDump.readText().invariantNewlines() shouldBe anotherExpectedApi

val mainExpectedApi =
anotherExpectedApi + readResourceFile("/examples/classes/Subsub2Class.dump")
jvmApiDump.shouldBeAFile()
jvmApiDump.readText().invariantNewlines().shouldBe(mainExpectedApi)
val mainExpectedApi =
anotherExpectedApi + readResourceFile("/examples/classes/Subsub2Class.dump")
jvmApiDump.shouldBeAFile()
jvmApiDump.readText().invariantNewlines() shouldBe mainExpectedApi
}
}
}

private val jvmApiDump: File get() = rootProjectDir.resolve("api/jvm/testproject.api")
private val anotherApiDump: File get() = rootProjectDir.resolve("api/anotherJvm/testproject.api")

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package kotlinx.validation.test
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.*
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.build
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveOutcome
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveTaskWithOutcome
import org.gradle.testkit.runner.TaskOutcome.SUCCESS
import org.junit.jupiter.api.Test

Expand Down Expand Up @@ -30,7 +31,7 @@ class NonPublicMarkersTest : BaseKotlinGradleTest() {
}

runner.build {
task(":apiCheck") shouldHaveOutcome SUCCESS
shouldHaveTaskWithOutcome(":apiCheck", SUCCESS)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import io.kotest.matchers.paths.shouldExist
import io.kotest.matchers.shouldBe
import io.kotest.matchers.string.shouldContain
import kotlin.io.path.readText
import org.gradle.testkit.runner.TaskOutcome
import org.gradle.testkit.runner.TaskOutcome.SUCCESS
import org.intellij.lang.annotations.Language

internal class SettingsPluginDslTest : FunSpec({
Expand Down Expand Up @@ -71,8 +71,8 @@ internal class SettingsPluginDslTest : FunSpec({
shouldNotHaveRunTask(":apiDump")
}

task(":sub1:apiDump") shouldHaveOutcome TaskOutcome.SUCCESS
task(":sub2:apiDump") shouldHaveOutcome TaskOutcome.SUCCESS
shouldHaveRunTask(":sub1:apiDump", SUCCESS)
shouldHaveRunTask(":sub2:apiDump", SUCCESS)
}

testCase.project.projectDir.resolve("sub1/api/sub1.api").asClue { apiDump ->
Expand Down
Loading