Skip to content

Commit b5fdd60

Browse files
committed
Add test coverage for runtime scope
1 parent 244b61c commit b5fdd60

File tree

3 files changed

+243
-67
lines changed

3 files changed

+243
-67
lines changed

plugin-test/src/test/groovy/org/gradle/github/dependencygraph/BaseExtractorTest.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ abstract class BaseExtractorTest extends Specification {
208208
}
209209
assert actual.relationship == (expected.relationship ?: "direct")
210210
assert actual.dependencies == (expected.dependencies ?: [])
211+
assert actual.scope == (expected.scope ?: "runtime")
211212
}
212213

213214
return true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
package org.gradle.github.dependencygraph
2+
3+
4+
import org.gradle.test.fixtures.maven.MavenModule
5+
6+
class ConfigurationFilterDependencyExtractorTest extends BaseExtractorTest {
7+
private MavenModule foo
8+
private MavenModule bar
9+
private MavenModule baz
10+
11+
private File settingsFile
12+
private File buildFile
13+
14+
def setup() {
15+
applyDependencyGraphPlugin()
16+
establishEnvironmentVariables()
17+
18+
foo = mavenRepo.module("org.test", "foo", "1.0").publish()
19+
bar = mavenRepo.module("org.test", "bar", "1.0").publish()
20+
baz = mavenRepo.module("org.test", "baz", "1.0").dependsOn(bar).publish()
21+
22+
settingsFile = file("settings.gradle") << """
23+
rootProject.name = 'parent'
24+
"""
25+
26+
buildFile = file("build.gradle") << """
27+
allprojects {
28+
group "org.test"
29+
version "1.0"
30+
31+
repositories {
32+
maven { url "${mavenRepo.uri}" }
33+
}
34+
}
35+
"""
36+
}
37+
38+
def "can filter projects to extract dependencies"() {
39+
given:
40+
settingsFile << "include 'a', 'b'"
41+
42+
buildFile << """
43+
project(':a') {
44+
apply plugin: 'java-library'
45+
dependencies {
46+
api 'org.test:foo:1.0'
47+
}
48+
}
49+
project(':b') {
50+
apply plugin: 'java-library'
51+
dependencies {
52+
api 'org.test:bar:1.0'
53+
}
54+
}
55+
"""
56+
57+
when:
58+
executer.withArgument("-DDEPENDENCY_GRAPH_INCLUDE_PROJECTS=:b")
59+
run()
60+
61+
then:
62+
def manifest = gitHubManifest()
63+
manifest.sourceFile == "settings.gradle"
64+
manifest.assertResolved([
65+
"org.test:bar:1.0": [package_url: purlFor(bar)]
66+
])
67+
}
68+
69+
def "can filter configurations to extract dependencies"() {
70+
given:
71+
settingsFile << "include 'a', 'b'"
72+
73+
buildFile << """
74+
project(':a') {
75+
apply plugin: 'java-library'
76+
dependencies {
77+
api 'org.test:foo:1.0'
78+
testImplementation 'org.test:baz:1.0'
79+
}
80+
}
81+
project(':b') {
82+
apply plugin: 'java-library'
83+
dependencies {
84+
implementation 'org.test:bar:1.0'
85+
testImplementation 'org.test:baz:1.0'
86+
}
87+
}
88+
"""
89+
90+
when:
91+
executer.withArgument("-DDEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS=compileClasspath")
92+
run()
93+
94+
then:
95+
def manifest = gitHubManifest()
96+
manifest.sourceFile == "settings.gradle"
97+
manifest.assertResolved([
98+
"org.test:foo:1.0": [package_url: purlFor(foo)],
99+
"org.test:bar:1.0": [package_url: purlFor(bar)]
100+
])
101+
}
102+
103+
def "can filter runtime projects to determine scope"() {
104+
given:
105+
settingsFile << "include 'a', 'b'"
106+
107+
buildFile << """
108+
project(':a') {
109+
apply plugin: 'java-library'
110+
dependencies {
111+
api 'org.test:foo:1.0'
112+
}
113+
}
114+
project(':b') {
115+
apply plugin: 'java-library'
116+
dependencies {
117+
implementation 'org.test:bar:1.0'
118+
}
119+
}
120+
"""
121+
122+
when:
123+
executer.withArgument("-DDEPENDENCY_GRAPH_RUNTIME_PROJECTS=:a")
124+
run()
125+
126+
then:
127+
def manifest = gitHubManifest()
128+
manifest.sourceFile == "settings.gradle"
129+
manifest.assertResolved([
130+
"org.test:foo:1.0": [package_url: purlFor(foo), scope: "runtime"],
131+
"org.test:bar:1.0": [package_url: purlFor(bar), scope: "development"],
132+
])
133+
}
134+
135+
def "can filter runtime configurations to determine scope"() {
136+
given:
137+
settingsFile << "include 'a', 'b'"
138+
139+
buildFile << """
140+
project(':a') {
141+
apply plugin: 'java-library'
142+
dependencies {
143+
api 'org.test:foo:1.0'
144+
testImplementation 'org.test:baz:1.0'
145+
}
146+
}
147+
project(':b') {
148+
apply plugin: 'java-library'
149+
dependencies {
150+
implementation 'org.test:bar:1.0'
151+
testImplementation 'org.test:baz:1.0'
152+
}
153+
}
154+
"""
155+
156+
when:
157+
executer.withArgument("-DDEPENDENCY_GRAPH_RUNTIME_CONFIGURATIONS=compileClasspath")
158+
run()
159+
160+
then:
161+
def manifest = gitHubManifest()
162+
manifest.sourceFile == "settings.gradle"
163+
manifest.assertResolved([
164+
"org.test:foo:1.0": [package_url: purlFor(foo), scope: "runtime"],
165+
"org.test:bar:1.0": [package_url: purlFor(bar), scope: "runtime"],
166+
"org.test:baz:1.0": [package_url: purlFor(baz), scope: "development", dependencies: ["org.test:bar:1.0"]]
167+
])
168+
}
169+
170+
def "can filter runtime configurations to determine scope"() {
171+
given:
172+
settingsFile << "include 'a', 'b'"
173+
174+
buildFile << """
175+
project(':a') {
176+
apply plugin: 'java-library'
177+
dependencies {
178+
api 'org.test:foo:1.0'
179+
testImplementation 'org.test:baz:1.0'
180+
}
181+
}
182+
project(':b') {
183+
apply plugin: 'java-library'
184+
dependencies {
185+
implementation 'org.test:bar:1.0'
186+
testImplementation 'org.test:baz:1.0'
187+
}
188+
}
189+
"""
190+
191+
when:
192+
executer.withArgument("-DDEPENDENCY_GRAPH_RUNTIME_CONFIGURATIONS=compileClasspath")
193+
run()
194+
195+
then:
196+
def manifest = gitHubManifest()
197+
manifest.sourceFile == "settings.gradle"
198+
manifest.assertResolved([
199+
"org.test:foo:1.0": [package_url: purlFor(foo), scope: "runtime"],
200+
"org.test:bar:1.0": [package_url: purlFor(bar), scope: "runtime"],
201+
"org.test:baz:1.0": [package_url: purlFor(baz), scope: "development", dependencies: ["org.test:bar:1.0"]]
202+
])
203+
}
204+
205+
def "can filter runtime projects and configurations to determine scope"() {
206+
given:
207+
settingsFile << "include 'a', 'b'"
208+
209+
buildFile << """
210+
project(':a') {
211+
apply plugin: 'java-library'
212+
dependencies {
213+
api 'org.test:foo:1.0'
214+
testImplementation 'org.test:baz:1.0'
215+
}
216+
}
217+
project(':b') {
218+
apply plugin: 'java-library'
219+
dependencies {
220+
api 'org.test:bar:1.0'
221+
testImplementation 'org.test:baz:1.0'
222+
}
223+
}
224+
"""
225+
226+
when:
227+
executer
228+
.withArgument("-DDEPENDENCY_GRAPH_RUNTIME_CONFIGURATIONS=compileClasspath")
229+
.withArgument("-DDEPENDENCY_GRAPH_RUNTIME_PROJECTS=:a")
230+
run()
231+
232+
then:
233+
def manifest = gitHubManifest()
234+
manifest.sourceFile == "settings.gradle"
235+
manifest.assertResolved([
236+
"org.test:foo:1.0": [package_url: purlFor(foo), scope: "runtime"],
237+
"org.test:bar:1.0": [package_url: purlFor(bar), scope: "development"],
238+
"org.test:baz:1.0": [package_url: purlFor(baz), scope: "development", dependencies: ["org.test:bar:1.0"]]
239+
])
240+
}
241+
242+
}

plugin-test/src/test/groovy/org/gradle/github/dependencygraph/MultiProjectDependencyExtractorTest.groovy

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -250,71 +250,4 @@ class MultiProjectDependencyExtractorTest extends BaseExtractorTest {
250250
"org.test:foo:1.0": [package_url: purlFor(foo)]
251251
])
252252
}
253-
254-
def "can filter projects to extract dependencies"() {
255-
given:
256-
settingsFile << "include 'a', 'b'"
257-
258-
buildFile << """
259-
project(':a') {
260-
apply plugin: 'java-library'
261-
dependencies {
262-
api 'org.test:foo:1.0'
263-
}
264-
}
265-
project(':b') {
266-
apply plugin: 'java-library'
267-
dependencies {
268-
api 'org.test:bar:1.0'
269-
}
270-
}
271-
"""
272-
273-
when:
274-
executer.withArgument("-DDEPENDENCY_GRAPH_INCLUDE_PROJECTS=:b")
275-
run()
276-
277-
then:
278-
def manifest = gitHubManifest()
279-
manifest.sourceFile == "settings.gradle"
280-
manifest.assertResolved([
281-
"org.test:bar:1.0": [package_url: purlFor(bar)]
282-
])
283-
}
284-
285-
def "can filter configurations to extract dependencies"() {
286-
given:
287-
settingsFile << "include 'a', 'b'"
288-
289-
buildFile << """
290-
project(':a') {
291-
apply plugin: 'java-library'
292-
dependencies {
293-
api 'org.test:foo:1.0'
294-
testImplementation 'org.test:baz:1.0'
295-
}
296-
}
297-
project(':b') {
298-
apply plugin: 'java-library'
299-
dependencies {
300-
implementation 'org.test:bar:1.0'
301-
testImplementation 'org.test:baz:1.0'
302-
}
303-
}
304-
"""
305-
306-
when:
307-
executer.withArgument("-DDEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS=compileClasspath")
308-
run()
309-
310-
then:
311-
def manifest = gitHubManifest()
312-
manifest.sourceFile == "settings.gradle"
313-
manifest.assertResolved([
314-
"org.test:foo:1.0": [package_url: purlFor(foo)],
315-
"org.test:bar:1.0": [package_url: purlFor(bar)]
316-
])
317-
}
318-
319-
320253
}

0 commit comments

Comments
 (0)