Skip to content

Commit 958cd04

Browse files
committed
update test assertions
1 parent 9b14442 commit 958cd04

File tree

5 files changed

+94
-37
lines changed

5 files changed

+94
-37
lines changed

modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/AndroidLibraryTest.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ internal class AndroidLibraryTest : BaseKotlinGradleTest() {
3737
runner {
3838
arguments.add(":kotlin-library:apiCheck")
3939
}
40-
}.build().apply {
40+
}.build {
4141
task(":kotlin-library:apiCheck") shouldHaveOutcome SUCCESS
4242
}
4343
}
@@ -70,7 +70,7 @@ internal class AndroidLibraryTest : BaseKotlinGradleTest() {
7070
runner {
7171
arguments.add(":java-library:apiCheck")
7272
}
73-
}.build().apply {
73+
}.build {
7474
task(":java-library:apiCheck") shouldHaveOutcome SUCCESS
7575
}
7676
}

modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/MultiPlatformSingleJvmTargetTest.kt

+37-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
11
package kotlinx.validation.test
22

3-
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.*
4-
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.*
3+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.BaseKotlinGradleTest
4+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.BaseKotlinScope
5+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.addText
6+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.buildGradleKts
7+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.dir
8+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.kotlin
9+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.readResourceFile
10+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.resolve
11+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.runner
12+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.settingsGradleKts
13+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.test
14+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.build
15+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.buildAndFail
16+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.invariantNewlines
17+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveOutcome
18+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveRunTask
19+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldNotHaveRunTask
20+
import io.kotest.assertions.withClue
521
import io.kotest.matchers.comparables.shouldBeEqualComparingTo
622
import io.kotest.matchers.string.shouldContain
723
import java.io.File
@@ -42,7 +58,6 @@ internal class MultiPlatformSingleJvmTargetTest : BaseKotlinGradleTest() {
4258
kotlin("Subsub2Class.kt", "jvmMain") {
4359
resolve("/examples/classes/Subsub2Class.kt")
4460
}
45-
4661
}
4762

4863
runner.build {
@@ -74,13 +89,28 @@ internal class MultiPlatformSingleJvmTargetTest : BaseKotlinGradleTest() {
7489
kotlin("Subsub2Class.kt", "jvmMain") {
7590
resolve("/examples/classes/Subsub2Class.kt")
7691
}
77-
92+
dir("src/jvmTest/kotlin") {}
93+
kotlin("Subsub2ClassTest.kt", "jvmTest") {
94+
addText(/*language=kotlin*/ """
95+
|package com.company.test
96+
|
97+
|class SubSub2Test {
98+
| fun blah() {
99+
| println("test")
100+
| }
101+
|}
102+
|
103+
""".trimMargin()
104+
)
105+
}
78106
}
79107

80108
runner.buildAndFail {
81-
task(":apiCheck") shouldHaveOutcome FAILED
82-
output shouldContain "API check failed for project :testproject"
83-
shouldNotHaveRunTask(":check")
109+
withClue(output) {
110+
shouldHaveRunTask(":apiCheck", FAILED)
111+
output shouldContain "API check failed for project :testproject"
112+
shouldNotHaveRunTask(":check")
113+
}
84114
}
85115
}
86116

@@ -101,7 +131,6 @@ internal class MultiPlatformSingleJvmTargetTest : BaseKotlinGradleTest() {
101131
kotlin("Subsub2Class.kt", "jvmMain") {
102132
resolve("/examples/classes/Subsub2Class.kt")
103133
}
104-
105134
}
106135

107136
runner.build {

modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/MultipleJvmTargetsTest.kt

+22-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,22 @@
11
package kotlinx.validation.test
22

3-
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.*
4-
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.*
3+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.BaseKotlinGradleTest
4+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.BaseKotlinScope
5+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.buildGradleKts
6+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.dir
7+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.kotlin
8+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.readResourceFile
9+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.resolve
10+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.runner
11+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.settingsGradleKts
12+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.test
13+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.build
14+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.buildAndFail
15+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.invariantNewlines
16+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveOutcome
17+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveRunTask
18+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldNotHaveRunTask
19+
import io.kotest.assertions.withClue
520
import io.kotest.matchers.file.shouldBeAFile
621
import io.kotest.matchers.shouldBe
722
import io.kotest.matchers.string.shouldContain
@@ -90,9 +105,11 @@ internal class MultipleJvmTargetsTest : BaseKotlinGradleTest() {
90105
}
91106

92107
runner.buildAndFail {
93-
task(":apiCheck") shouldHaveOutcome FAILED
94-
output shouldContain "API check failed for project :testproject"
95-
shouldNotHaveRunTask(":check")
108+
withClue(output) {
109+
shouldHaveRunTask(":apiCheck") shouldHaveOutcome FAILED
110+
output shouldContain "API check failed for project :testproject"
111+
shouldNotHaveRunTask(":check")
112+
}
96113
}
97114
}
98115

modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/SubprojectsWithPluginOnSubTests.kt

+17-21
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package kotlinx.validation.test
33
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.api.*
44
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.build
55
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.invariantNewlines
6-
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveOutcome
6+
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldHaveRunTask
77
import dev.adamko.kotlin.binary_compatibility_validator.test.utils.shouldNotHaveRunTask
88
import io.kotest.matchers.comparables.shouldBeEqualComparingTo
99
import io.kotest.matchers.file.shouldBeEmpty
@@ -81,9 +81,9 @@ internal class SubprojectsWithPluginOnSubTests : BaseKotlinGradleTest() {
8181

8282
runner.build {
8383
shouldNotHaveRunTask(":apiCheck")
84-
task(":sub1:apiCheck") shouldHaveOutcome SUCCESS
85-
task(":sub1:subsub1:apiCheck") shouldHaveOutcome SUCCESS
86-
task(":sub1:subsub2:apiCheck") shouldHaveOutcome SUCCESS
84+
shouldHaveRunTask(":sub1:apiCheck", SUCCESS)
85+
shouldHaveRunTask(":sub1:subsub1:apiCheck", SUCCESS)
86+
shouldHaveRunTask(":sub1:subsub2:apiCheck", SUCCESS)
8787
shouldNotHaveRunTask(":sub2:apiCheck")
8888
}
8989
}
@@ -112,9 +112,9 @@ internal class SubprojectsWithPluginOnSubTests : BaseKotlinGradleTest() {
112112

113113
runner.build {
114114
shouldNotHaveRunTask(":apiCheck")
115-
task(":sub1:apiCheck") shouldHaveOutcome SUCCESS
116-
task(":sub1:subsub1:apiCheck") shouldHaveOutcome SUCCESS
117-
task(":sub1:subsub2:apiCheck") shouldHaveOutcome SUCCESS
115+
shouldHaveRunTask(":sub1:apiCheck", SUCCESS)
116+
shouldHaveRunTask(":sub1:subsub1:apiCheck", SUCCESS)
117+
shouldHaveRunTask(":sub1:subsub2:apiCheck", SUCCESS)
118118
shouldNotHaveRunTask(":sub2:apiCheck")
119119
}
120120
}
@@ -134,7 +134,7 @@ internal class SubprojectsWithPluginOnSubTests : BaseKotlinGradleTest() {
134134
}
135135

136136
runner.build {
137-
task(":sub1:apiCheck") shouldHaveOutcome SUCCESS
137+
shouldHaveRunTask(":sub1:apiCheck", SUCCESS)
138138
}
139139
}
140140

@@ -155,7 +155,7 @@ internal class SubprojectsWithPluginOnSubTests : BaseKotlinGradleTest() {
155155
}
156156

157157
runner.build {
158-
task(":sub1:subsub2:apiCheck") shouldHaveOutcome SUCCESS
158+
shouldHaveRunTask(":sub1:subsub2:apiCheck", SUCCESS)
159159
}
160160
}
161161

@@ -181,7 +181,7 @@ internal class SubprojectsWithPluginOnSubTests : BaseKotlinGradleTest() {
181181
}
182182

183183
runner.build {
184-
task(":sub1:subsub2:apiCheck") shouldHaveOutcome SUCCESS
184+
shouldHaveRunTask(":sub1:subsub2:apiCheck", SUCCESS)
185185
}
186186
}
187187

@@ -218,9 +218,9 @@ internal class SubprojectsWithPluginOnSubTests : BaseKotlinGradleTest() {
218218

219219
runner.build {
220220
shouldNotHaveRunTask(":apiCheck")
221-
task(":sub1:apiCheck") shouldHaveOutcome SUCCESS
222-
task(":sub1:subsub1:apiCheck") shouldHaveOutcome SUCCESS
223-
task(":sub1:subsub2:apiCheck") shouldHaveOutcome SUCCESS
221+
shouldHaveRunTask(":sub1:apiCheck", SUCCESS)
222+
shouldHaveRunTask(":sub1:subsub1:apiCheck", SUCCESS)
223+
shouldHaveRunTask(":sub1:subsub2:apiCheck", SUCCESS)
224224
shouldNotHaveRunTask(":sub2:apiCheck")
225225
}
226226
}
@@ -236,13 +236,12 @@ internal class SubprojectsWithPluginOnSubTests : BaseKotlinGradleTest() {
236236
}
237237

238238
runner.build {
239-
task(":sub1:apiDump") shouldHaveOutcome SUCCESS
239+
shouldHaveRunTask(":sub1:apiDump", SUCCESS)
240240

241241
val apiDumpFile = rootProjectDir.resolve("sub1/api/sub1.api")
242242
assertTrue(apiDumpFile.exists(), "api dump file ${apiDumpFile.path} should exist")
243243

244244
apiDumpFile.shouldBeEmpty()
245-
//Assertions.assertThat(apiDumpFile.readText()).isEqualToIgnoringNewLines("")
246245
}
247246
}
248247

@@ -271,9 +270,9 @@ internal class SubprojectsWithPluginOnSubTests : BaseKotlinGradleTest() {
271270

272271
runner.build {
273272
shouldNotHaveRunTask(":apiDump")
274-
task(":sub1:apiDump") shouldHaveOutcome SUCCESS
275-
task(":sub1:subsub1:apiDump") shouldHaveOutcome SUCCESS
276-
task(":sub1:subsub2:apiDump") shouldHaveOutcome SUCCESS
273+
shouldHaveRunTask(":sub1:apiDump", SUCCESS)
274+
shouldHaveRunTask(":sub1:subsub1:apiDump", SUCCESS)
275+
shouldHaveRunTask(":sub1:subsub2:apiDump", SUCCESS)
277276
shouldNotHaveRunTask(":sub2:apiDump")
278277

279278
assertFalse(
@@ -284,19 +283,16 @@ internal class SubprojectsWithPluginOnSubTests : BaseKotlinGradleTest() {
284283
val apiSub1 = rootProjectDir.resolve("sub1/api/sub1.api")
285284
assertTrue(apiSub1.exists(), "api dump file ${apiSub1.path} should exist")
286285
apiSub1.shouldBeEmpty()
287-
//Assertions.assertThat(apiSub1.readText()).isEqualToIgnoringNewLines("")
288286

289287
val apiSubsub1 = rootProjectDir.resolve("sub1/subsub1/api/subsub1.api")
290288
assertTrue(apiSubsub1.exists(), "api dump file ${apiSubsub1.path} should exist")
291289
val apiSubsub1Expected = readResourceFile("/examples/classes/Subsub1Class.dump")
292290
apiSubsub1.readText().invariantNewlines().shouldBeEqualComparingTo(apiSubsub1Expected)
293-
//Assertions.assertThat(apiSubsub1.readText()).isEqualToIgnoringNewLines(apiSubsub1Expected)
294291

295292
val apiSubsub2 = rootProjectDir.resolve("sub1/subsub2/api/subsub2.api")
296293
assertTrue(apiSubsub2.exists(), "api dump file ${apiSubsub2.path} should exist")
297294
val apiSubsub2Expected = readResourceFile("/examples/classes/Subsub2Class.dump")
298295
apiSubsub2.readText().invariantNewlines().shouldBeEqualComparingTo(apiSubsub2Expected)
299-
//Assertions.assertThat(apiSubsub2.readText()).isEqualToIgnoringNewLines(apiSubsub2Expected)
300296

301297
val apiSub2 = rootProjectDir.resolve("sub2/api/sub2.api")
302298
assertFalse(apiSub2.exists(), "api dump file ${apiSub2.path} should NOT exist")

modules/bcv-gradle-plugin/src/testFixtures/kotlin/kotestGradleAssertions.kt

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package dev.adamko.kotlin.binary_compatibility_validator.test.utils
22

3-
import io.kotest.matchers.*
3+
import io.kotest.matchers.Matcher
4+
import io.kotest.matchers.MatcherResult
5+
import io.kotest.matchers.neverNullMatcher
6+
import io.kotest.matchers.should
7+
import io.kotest.matchers.shouldNot
48
import org.gradle.api.NamedDomainObjectCollection
59
import org.gradle.testkit.runner.BuildResult
610
import org.gradle.testkit.runner.BuildTask
@@ -34,6 +38,17 @@ infix fun BuildResult?.shouldHaveRunTask(taskPath: String): BuildTask {
3438
return this?.task(taskPath)!!
3539
}
3640

41+
/** Assert that a task ran, with an [expected outcome][expectedOutcome]. */
42+
fun BuildResult?.shouldHaveRunTask(
43+
taskPath: String,
44+
expectedOutcome: TaskOutcome
45+
): BuildTask {
46+
this should haveTask(taskPath)
47+
val task = this?.task(taskPath)!!
48+
task should haveOutcome(expectedOutcome)
49+
return task
50+
}
51+
3752
/**
3853
* Assert that a task did not run.
3954
*

0 commit comments

Comments
 (0)