@@ -80,54 +80,110 @@ def test_parse_build_gradle(get_plugin):
8080 assert artifact .concept_name == "gradle"
8181
8282 nodes = artifact .get_nodes ()
83- assert len (nodes ) > 0
8483
85- # Check for specific extracted values
86- group_node = next (filter (lambda x : x .id == make_id ("build.gradle" , "group" , "com.example" ), nodes ), None )
87- version_node = next (filter (lambda x : x .id == make_id ("build.gradle" , "version" , "1.0.0" ), nodes ), None )
88- source_compat_node = next (filter (lambda x : x .id == make_id ("build.gradle" , "sourceCompatibility" , "11" ), nodes ), None )
89- main_class_node = next (filter (lambda x : x .id == make_id ("build.gradle" , "application" , "mainClass" , "com.example.Main" ), nodes ), None )
84+ # Check for plugins (id as option, version as nested option, version number as value)
85+ # Structure: plugins -> plugin-id -> version -> version-number
86+ plugin_versions = next (
87+ filter (
88+ lambda x : x .id == make_id ("build.gradle" , "plugins" , "com.github.ben-manes.versions" , "version" , "0.53.0" ),
89+ nodes
90+ ),
91+ None
92+ )
93+ plugin_spotbugs = next (
94+ filter (
95+ lambda x : x .id == make_id ("build.gradle" , "plugins" , "com.github.spotbugs" , "version" , "6.4.8" ),
96+ nodes
97+ ),
98+ None
99+ )
100+ plugin_shadow = next (
101+ filter (
102+ lambda x : x .id == make_id ("build.gradle" , "plugins" , "com.gradleup.shadow" , "version" , "9.3.1" ),
103+ nodes
104+ ),
105+ None
106+ )
107+ plugin_jmh = next (
108+ filter (
109+ lambda x : x .id == make_id ("build.gradle" , "plugins" , "me.champeau.jmh" , "version" , "0.7.2" ),
110+ nodes
111+ ),
112+ None
113+ )
90114
91- assert group_node is not None
92- assert group_node .config_type == ConfigType .NAME
93- assert version_node is not None
94- assert version_node .config_type == ConfigType .VERSION_NUMBER
95- assert source_compat_node is not None
96- assert main_class_node is not None
115+ assert plugin_versions is not None , "Plugin 'com.github.ben-manes.versions' should be parsed"
116+ assert plugin_spotbugs is not None , "Plugin 'com.github.spotbugs' should be parsed"
117+ assert plugin_shadow is not None , "Plugin 'com.gradleup.shadow' should be parsed"
118+ assert plugin_jmh is not None , "Plugin 'me.champeau.jmh' should be parsed"
97119
98120 # Check for ext properties
99- kotlin_version_node = next (filter (lambda x : x .id == make_id ("build.gradle" , "ext" , "kotlinVersion" , "1.8.0 " ), nodes ), None )
100- spring_version_node = next ( filter ( lambda x : x . id == make_id ( "build.gradle" , "ext" , "springVersion" , "5.3.20" ), nodes ), None )
121+ github_project_name = next (filter (lambda x : x .id == make_id ("build.gradle" , "ext.githubProjectName " , "spectator " ), nodes ), None )
122+ assert github_project_name is not None
101123
102- assert kotlin_version_node is not None
103- assert spring_version_node is not None
104-
105- # Check for specific dependencies (groupId:artifactId as option, version as value)
106- # Structure: dependencies -> org.springframework.boot:spring-boot-starter-web -> 2.7.0
107- spring_boot_dep = next (
124+ # Check for dependencies
125+ # Structure: subprojects -> dependencies -> configuration-type -> dependency-name
126+ slf4j_dep = next (
108127 filter (
109- lambda x : x .id == make_id ("build.gradle" , "dependencies" , "org.springframework.boot:spring-boot-starter-web " , "2.7.0 " ),
128+ lambda x : x .id == make_id ("build.gradle" , "subprojects" , " dependencies" , "implementation " , "org.slf4j:slf4j-api " ),
110129 nodes
111130 ),
112131 None
113132 )
114133 junit_dep = next (
115134 filter (
116- lambda x : x .id == make_id ("build.gradle" , "dependencies" , "junit:junit" , "4.13.2" ),
135+ lambda x : x .id == make_id ("build.gradle" , "subprojects" , "dependencies" , "testImplementation" , "org.junit.jupiter:junit-jupiter" ),
136+ nodes
137+ ),
138+ None
139+ )
140+ equalsverifier_dep = next (
141+ filter (
142+ lambda x : x .id == make_id ("build.gradle" , "subprojects" , "dependencies" , "testImplementation" , "nl.jqno.equalsverifier:equalsverifier" ),
117143 nodes
118144 ),
119145 None
120146 )
121147
122- assert spring_boot_dep is not None , "Spring Boot dependency should be parsed as groupId:artifactId"
123- assert junit_dep is not None , "JUnit dependency should be parsed as groupId:artifactId"
124-
125- # Check for ext properties
126- kotlin_version_node = next (filter (lambda x : x .id == make_id ("build.gradle" , "ext" , "kotlinVersion" , "1.8.0" ), nodes ), None )
127- spring_version_node = next (filter (lambda x : x .id == make_id ("build.gradle" , "ext" , "springVersion" , "5.3.20" ), nodes ), None )
128-
129- assert kotlin_version_node is not None
130- assert spring_version_node is not None
148+ assert slf4j_dep is not None , "SLF4J dependency should be parsed"
149+ assert junit_dep is not None , "JUnit Jupiter dependency should be parsed"
150+ assert equalsverifier_dep is not None , "EqualsVerifier dependency should be parsed"
151+
152+ # Check for jmh section options (all options should be parsed, not just the first one)
153+ jmh_version = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "jmh" , "jmhVersion" , "1.37" ), nodes ), None )
154+ jmh_warmup = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "jmh" , "warmupIterations" , "2" ), nodes ), None )
155+ jmh_iterations = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "jmh" , "iterations" , "5" ), nodes ), None )
156+ jmh_fork = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "jmh" , "fork" , "1" ), nodes ), None )
157+ jmh_includeTests = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "jmh" , "includeTests" , "false" ), nodes ), None )
158+
159+ assert jmh_version is not None , "jmh.jmhVersion should be parsed"
160+ assert jmh_warmup is not None , "jmh.warmupIterations should be parsed (not just first option)"
161+ assert jmh_iterations is not None , "jmh.iterations should be parsed"
162+ assert jmh_fork is not None , "jmh.fork should be parsed"
163+ assert jmh_includeTests is not None , "jmh.includeTests should be parsed"
164+
165+ # Check for checkstyle section options
166+ checkstyle_version = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "checkstyle" , "toolVersion" , "13.1.0" ), nodes ), None )
167+ checkstyle_ignoreFailures = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "checkstyle" , "ignoreFailures" , "false" ), nodes ), None )
168+
169+ assert checkstyle_version is not None , "checkstyle.toolVersion should be parsed"
170+ assert checkstyle_ignoreFailures is not None , "checkstyle.ignoreFailures should be parsed"
171+
172+ # Check for spotbugs section options
173+ spotbugs_version = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "spotbugs" , "toolVersion" , "4.9.8" ), nodes ), None )
174+ spotbugs_useJavaToolchains = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "spotbugs" , "useJavaToolchains" , "false" ), nodes ), None )
175+ spotbugs_ignoreFailures = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "spotbugs" , "ignoreFailures" , "false" ), nodes ), None )
176+
177+ assert spotbugs_version is not None , "spotbugs.toolVersion should be parsed"
178+ assert spotbugs_useJavaToolchains is not None , "spotbugs.useJavaToolchains should be parsed"
179+ assert spotbugs_ignoreFailures is not None , "spotbugs.ignoreFailures should be parsed"
180+
181+ # Check for pmd section options
182+ pmd_version = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "pmd" , "toolVersion" , "7.16.0" ), nodes ), None )
183+ pmd_ignoreFailures = next (filter (lambda x : x .id == make_id ("build.gradle" , "subprojects" , "pmd" , "ignoreFailures" , "false" ), nodes ), None )
184+
185+ assert pmd_version is not None , "pmd.toolVersion should be parsed"
186+ assert pmd_ignoreFailures is not None , "pmd.ignoreFailures should be parsed"
131187
132188
133189def test_parse_settings_gradle (get_plugin ):
0 commit comments