-
Notifications
You must be signed in to change notification settings - Fork 627
/
GradleClassMethodRegexTestFilterTest.kt
105 lines (92 loc) · 4.42 KB
/
GradleClassMethodRegexTestFilterTest.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package io.kotest.runner.junit.platform.gradle
import io.kotest.core.descriptors.append
import io.kotest.core.descriptors.toDescriptor
import io.kotest.core.filter.TestFilterResult
import io.kotest.core.spec.style.FunSpec
import io.kotest.datatest.withData
import io.kotest.matchers.shouldBe
class GradleClassMethodRegexTestFilterTest : FunSpec({
context("include classes") {
val spec = GradleClassMethodRegexTestFilterTest::class.toDescriptor()
withData(
nameFn = { filters -> "should be INCLUDED when evaluating $filters" },
listOf("\\QGradleClassMethodRegexTestFilterTest\\E"),
listOf(".*\\QthodRegexTestFilterTest\\E"),
listOf(".*\\QTest\\E"),
listOf("\\Qio.kotest.runner.junit.platform.gradle.GradleClassMethodRegexTestFilterTest\\E"),
listOf(".*\\Q.platform.gradle.GradleClassMethodRegexTestFilterTest\\E"),
listOf(".*\\Qorm.gradle.GradleClassMethodRegexTestFilterTest\\E")
) { filters ->
GradleClassMethodRegexTestFilter(filters).filter(spec) shouldBe TestFilterResult.Include
}
}
context("exclude classes") {
val spec = GradleClassMethodRegexTestFilterTest::class.toDescriptor()
withData(
nameFn = { filters -> "should be EXCLUDED when evaluating $filters" },
listOf("\\QGradleClassMethodRegexTestFilterTest2\\E"),
listOf("\\QGradleClassMethodRegexTestFilterTes\\E"),
listOf("\\Qio.kotest.runner.junit.platform.GradleClassMethodRegexTestFilterTest\\E")
) { filters ->
GradleClassMethodRegexTestFilter(filters).filter(spec) shouldBe TestFilterResult.Exclude(null)
}
}
context("include packages") {
val spec = GradleClassMethodRegexTestFilterTest::class.toDescriptor()
val container = spec.append("a context")
val test = container.append("nested test")
withData(
nameFn = { filters -> "should be INCLUDED when evaluating $filters" },
listOf("\\Qio.kotest.runner.junit.platform.gradle\\E"),
listOf("\\Qio.kotest.runner.junit.platform.gradle.\\E.*"),
listOf(".*\\Qnner.junit.platform.gradle\\E"),
listOf(".*\\Qnner.junit.platform.gradle.\\E.*"),
listOf(".*\\Q.junit.platform.gradle\\E"),
listOf("\\Qio.kotest.runner.junit.platform.gra\\E.*"),
listOf("\\Qio.kotest.runner.junit\\E"),
) { filters ->
GradleClassMethodRegexTestFilter(filters).filter(spec) shouldBe TestFilterResult.Include
}
withData(
nameFn = { filters -> "should be EXCLUDED when evaluating $filters" },
listOf("\\Qio.kotest.runner.junit2\\E"),
listOf("\\Qio.kotest.runner.junit\\E", ".*\\QSpec\\E"),
) { filters ->
GradleClassMethodRegexTestFilter(filters).filter(spec) shouldBe TestFilterResult.Exclude(null)
}
withData(
nameFn = { filters -> "should be INCLUDED when container and test were evaluated using $filters" },
listOf("\\QGradleClassMethodRegexTestFilterTest.a context\\E.*"),
listOf(".*\\QTest\\E", "\\QGradleClassMethodRegex\\E.*\\Q.a context\\E.*"),
) { filters ->
GradleClassMethodRegexTestFilter(filters).filter(container) shouldBe TestFilterResult.Include
GradleClassMethodRegexTestFilter(filters).filter(test) shouldBe TestFilterResult.Include
}
}
context("includes with test paths") {
val spec = GradleClassMethodRegexTestFilterTest::class.toDescriptor()
val container = spec.append("a context")
val test = container.append("nested test")
val fqcn = "\\Q${GradleClassMethodRegexTestFilterTest::class.qualifiedName}\\E"
withData(
nameFn = { "should be INCLUDED when filter is: $it" },
fqcn,
"$fqcn\\Q.a context\\E.*",
".*\\Q.gradle.GradleClassMethodRegexTestFilterTest.a context\\E.*",
".*\\Qadle.GradleClassMethodRegexTestFilterTest.a context\\E.*"
) { filter ->
GradleClassMethodRegexTestFilter(listOf(filter))
.filter(test) shouldBe TestFilterResult.Include
}
withData(
nameFn = { "should be EXCLUDED when filter is: $it" },
"$fqcn\\Q.a context2\\E",
"$fqcn\\Q.nested test\\E",
"$fqcn\\Q.a context.nested test2\\E",
".*\\QsMethodRegexTestFilterTest.a context -- nested test2\\Q",
) { filter ->
GradleClassMethodRegexTestFilter(listOf(filter))
.filter(test) shouldBe TestFilterResult.Exclude(null)
}
}
})