@@ -19,28 +19,8 @@ final class TypeUsageSpec extends AbstractJvmSpec {
1919 when:
2020 build(gradleVersion, gradleProject.rootDir, 'computeTypeUsageMain')
2121
22- then: 'has correct summary'
23- def usage = project.actualTypeUsage()
24- assertThat(usage.projectPath).isEqualTo(':proj')
25- assertThat(usage.summary.totalTypes).isGreaterThan(0)
26- assertThat(usage.summary.totalFiles).isEqualTo(2)
27- assertThat(usage.summary.internalTypes).isEqualTo(1)
28-
29- and: 'tracks internal usage'
30- assertThat(usage.internal).containsKey('com.example.Example')
31- // Note: Internal class is not tracked because it's defined but never used
32-
33- and: 'tracks library dependencies'
34- assertThat(usage.libraryDependencies).isNotEmpty()
35-
36- and: 'tracks commons-collections usage'
37- assertThat(usage.libraryDependencies)
38- .containsKey('org.apache.commons:commons-collections4')
39- def commonsUsage = usage.libraryDependencies.get('org.apache.commons:commons-collections4')
40- assertThat(commonsUsage).containsKey('org.apache.commons.collections4.bag.HashBag')
41-
42- and: 'tracks kotlin stdlib usage'
43- assert usage.libraryDependencies.keySet().any { it.startsWith('org.jetbrains.kotlin:kotlin-stdlib') }
22+ then:
23+ assertThat(project.actualTypeUsage()).isEqualTo(project.expectedTypeUsage())
4424
4525 where:
4626 gradleVersion << gradleVersions()
@@ -54,46 +34,8 @@ final class TypeUsageSpec extends AbstractJvmSpec {
5434 when:
5535 build(gradleVersion, gradleProject.rootDir, 'computeTypeUsageMain')
5636
57- then: 'excluded packages are not present'
58- def usage = project.actualTypeUsage()
59- def allTypes = usage.libraryDependencies.values()
60- .collectMany { it.keySet() }
61-
62- assertThat(allTypes).doesNotContain('org.apache.commons.collections4.bag.HashBag')
63-
64- and: 'excluded types are not present'
65- assertThat(allTypes).doesNotContain('kotlin.Unit')
66-
67- and: 'non-excluded types are still present'
68- assertThat(usage.internal).containsKey('com.example.Example')
69-
70- where:
71- gradleVersion << gradleVersions()
72- }
73-
74- def " categorizes dependencies correctly (#gradleVersion)" () {
75- given:
76- def project = new TypeUsageProject()
77- gradleProject = project.gradleProject
78-
79- when:
80- build(gradleVersion, gradleProject.rootDir, 'computeTypeUsageMain')
81-
82- then: 'internal types are in internal map'
83- def usage = project.actualTypeUsage()
84- assertThat(usage.internal).isNotEmpty()
85- assertThat(usage.internal).containsKey('com.example.Example')
86-
87- and: 'library types are in libraryDependencies map'
88- assertThat(usage.libraryDependencies).isNotEmpty()
89-
90- and: 'no project dependencies (single-project)'
91- assertThat(usage.projectDependencies).isEmpty()
92-
93- and: 'summary counts match'
94- assertThat(usage.summary.internalTypes).isEqualTo(usage.internal.size())
95- assertThat(usage.summary.libraryDependencies).isEqualTo(usage.libraryDependencies.size())
96- assertThat(usage.summary.projectDependencies).isEqualTo(0)
37+ then:
38+ assertThat(project.actualTypeUsage()).isEqualTo(project.expectedTypeUsage())
9739
9840 where:
9941 gradleVersion << gradleVersions()
@@ -107,88 +49,14 @@ final class TypeUsageSpec extends AbstractJvmSpec {
10749 when:
10850 build(gradleVersion, gradleProject.rootDir, 'computeTypeUsageMain')
10951
110- then: 'app module tracks project dependencies'
111- def appUsage = project.actualTypeUsageFor(':app')
112- assertThat(appUsage.projectPath).isEqualTo(':app')
113- assertThat(appUsage.projectDependencies).hasSize(2)
114- assertThat(appUsage.projectDependencies).containsKey(':core')
115- assertThat(appUsage.projectDependencies).containsKey(':utils')
116-
117- and: 'app tracks types from core'
118- def coreTypes = appUsage.projectDependencies[':core']
119- assertThat(coreTypes).containsKey('com.example.core.UserRepository')
120- assertThat(coreTypes).containsKey('com.example.core.User')
121-
122- and: 'app tracks types from utils'
123- def utilsTypes = appUsage.projectDependencies[':utils']
124- assertThat(utilsTypes).containsKey('com.example.utils.Logger')
125-
126- and: 'app tracks library dependencies'
127- assertThat(appUsage.libraryDependencies).containsKey('org.apache.commons:commons-collections4')
128-
129- and: 'app tracks internal types'
130- assertThat(appUsage.internal).containsKey('com.example.app.MainActivity')
131-
132- where:
133- gradleVersion << gradleVersions()
134- }
135-
136- def " core module tracks its dependencies (#gradleVersion)" () {
137- given:
138- def project = new TypeUsageMultiModuleProject()
139- gradleProject = project.gradleProject
140-
141- when:
142- build(gradleVersion, gradleProject.rootDir, 'computeTypeUsageMain')
143-
144- then: 'core tracks utils as project dependency'
145- def coreUsage = project.actualTypeUsageFor(':core')
146- assertThat(coreUsage.projectPath).isEqualTo(':core')
147- assertThat(coreUsage.projectDependencies).hasSize(1)
148- assertThat(coreUsage.projectDependencies).containsKey(':utils')
149-
150- and: 'core tracks Logger from utils'
151- def utilsTypes = coreUsage.projectDependencies[':utils']
152- assertThat(utilsTypes).containsKey('com.example.utils.Logger')
153-
154- and: 'core tracks its own internal types'
155- assertThat(coreUsage.internal).containsKey('com.example.core.User')
156-
157- and: 'core has no library dependencies beyond kotlin stdlib'
158- def nonKotlinLibs = coreUsage.libraryDependencies.keySet().findAll {
159- !it.startsWith('org.jetbrains')
160- }
161- assertThat(nonKotlinLibs).isEmpty()
162-
163- where:
164- gradleVersion << gradleVersions()
165- }
166-
167- def " utils module has only library dependencies (#gradleVersion)" () {
168- given:
169- def project = new TypeUsageMultiModuleProject()
170- gradleProject = project.gradleProject
171-
172- when:
173- build(gradleVersion, gradleProject.rootDir, 'computeTypeUsageMain')
174-
175- then: 'utils has no project dependencies'
176- def utilsUsage = project.actualTypeUsageFor(':utils')
177- assertThat(utilsUsage.projectPath).isEqualTo(':utils')
178- assertThat(utilsUsage.projectDependencies).isEmpty()
179-
180- and: 'utils tracks commons-io'
181- assertThat(utilsUsage.libraryDependencies).containsKey('commons-io:commons-io')
182- def commonsIoTypes = utilsUsage.libraryDependencies['commons-io:commons-io']
183- assertThat(commonsIoTypes).containsKey('org.apache.commons.io.FileUtils')
52+ then: 'app module'
53+ assertThat(project.actualTypeUsageFor(':app')).isEqualTo(project.expectedAppTypeUsage())
18454
185- and: 'utils tracks internal Logger type '
186- assertThat(utilsUsage.internal).containsKey('com.example.utils.Logger' )
55+ and: 'core module '
56+ assertThat(project.actualTypeUsageFor(':core')).isEqualTo(project.expectedCoreTypeUsage() )
18757
188- and: 'summary counts are correct'
189- assertThat(utilsUsage.summary.projectDependencies).isEqualTo(0)
190- assertThat(utilsUsage.summary.libraryDependencies).isGreaterThan(0)
191- assertThat(utilsUsage.summary.internalTypes).isEqualTo(utilsUsage.internal.size())
58+ and: 'utils module'
59+ assertThat(project.actualTypeUsageFor(':utils')).isEqualTo(project.expectedUtilsTypeUsage())
19260
19361 where:
19462 gradleVersion << gradleVersions()
0 commit comments