/
LibraryEntitiesShouldNotBePublicSpec.kt
130 lines (117 loc) · 3.32 KB
/
LibraryEntitiesShouldNotBePublicSpec.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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package io.gitlab.arturbosch.detekt.libraries
import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.test.TestConfig
import io.gitlab.arturbosch.detekt.test.assertThat
import io.gitlab.arturbosch.detekt.test.compileAndLint
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
class LibraryEntitiesShouldNotBePublicSpec {
@Test
fun `should not report without explicit filters set`() {
val subject = LibraryEntitiesShouldNotBePublic(TestConfig(Config.EXCLUDES_KEY to "**"))
assertThat(
subject.compileAndLint(
"""
class A
""".trimIndent()
)
).isEmpty()
}
@Nested
inner class `positive cases` {
val subject = LibraryEntitiesShouldNotBePublic()
@Test
fun `should report a class`() {
assertThat(
subject.compileAndLint(
"""
class A
""".trimIndent()
)
).hasSize(1)
}
@Test
fun `should report a class with function`() {
assertThat(
subject.compileAndLint(
"""
class A {
fun foo(): Int{
return 1
}
}
""".trimIndent()
)
).hasSize(1)
}
@Test
fun `should report a typealias`() {
assertThat(
subject.compileAndLint(
"""
typealias A = List<String>
""".trimIndent()
)
).hasSize(1)
}
@Test
fun `should report a typealias and a function`() {
assertThat(
subject.compileAndLint(
"""
typealias A = List<String>
fun foo() = Unit
""".trimIndent()
)
).hasSize(2)
}
@Test
fun `should report a function`() {
assertThat(
subject.compileAndLint(
"""
fun foo() = Unit
""".trimIndent()
)
).hasSize(1)
}
}
@Nested
inner class `negative cases` {
val subject = LibraryEntitiesShouldNotBePublic()
@Test
fun `should not report a class`() {
assertThat(
subject.compileAndLint(
"""
internal class A {
fun foo(): Int{
return 1
}
}
""".trimIndent()
)
).isEmpty()
}
@Test
fun `should not report a class with function`() {
assertThat(
subject.compileAndLint(
"""
internal class A
""".trimIndent()
)
).isEmpty()
}
@Test
fun `should not report a typealias`() {
assertThat(
subject.compileAndLint(
"""
internal typealias A = List<String>
""".trimIndent()
)
).isEmpty()
}
}
}