@@ -19,42 +19,49 @@ def _outputs(env, got):
19
19
got_java_info = got_target .provider (JavaInfo , java_info_subject_factory )
20
20
got_java_info .java_outputs ().transform (** map_to ("class_jar" )).contains (env .ctx .file .class_jar )
21
21
22
- want_jars = [
22
+ want_compile_jars = [
23
23
j
24
- for d in env .ctx .attr .transitive_deps
24
+ for d in env .ctx .attr .transitive_compile_deps
25
25
if JavaInfo in d
26
26
for j in d [JavaInfo ].compile_jars .to_list ()
27
27
]
28
28
29
- got_java_info .transitive_compile_time_jars ().contains_at_least (want_jars )
29
+ want_runtime_jars = [
30
+ j
31
+ for d in env .ctx .attr .transitive_runtime_deps
32
+ if JavaInfo in d
33
+ for j in d [JavaInfo ].transitive_runtime_jars .to_list ()
34
+ ]
35
+
36
+ got_java_info .transitive_compile_time_jars ().contains_exactly ([j .short_path for j in want_compile_jars ])
37
+ got_java_info .transitive_runtime_jars ().contains_exactly ([j .short_path for j in want_runtime_jars ])
30
38
got_java_info .source_jars ().contains (env .ctx .file .source_jar )
31
39
32
40
# get actions
33
41
source = got_target .action_generating (env .ctx .file .source_jar .short_path )
34
42
35
43
compile = got_target .action_generating (env .ctx .file .class_jar .short_path )
36
- compile .contains_at_least_inputs (want_jars )
44
+ compile .contains_at_least_inputs (
45
+ [i [JavaInfo ].compile_jars .to_list () for i in env .ctx .attr .inputs if JavaInfo in i ] + env .ctx .files .inputs ,
46
+ )
37
47
38
- def test_deps_core_kt_jvm_library (test ):
48
+ def _test_neverlink_deps (test , rule_under_test , ** kwargs ):
39
49
have = test .have (
40
- core_kt_jvm_library ,
50
+ rule_under_test ,
41
51
name = "have" ,
42
- srcs = [
43
- test .artifact ("hold.kt" ),
44
- ],
45
- deps = [
46
- ],
52
+ srcs = [test .artifact ("hold.kt" )],
53
+ deps = [],
54
+ neverlink = True ,
55
+ ** kwargs
47
56
)
48
57
58
+ got_src = test .artifact ("gave.kt" )
49
59
got = test .got (
50
- core_kt_jvm_library ,
60
+ rule_under_test ,
51
61
name = "got" ,
52
- srcs = [
53
- test .artifact ("gave.kt" ),
54
- ],
55
- deps = [
56
- have ,
57
- ],
62
+ srcs = [got_src ],
63
+ deps = [have ],
64
+ ** kwargs
58
65
)
59
66
test .claim (
60
67
got = got ,
@@ -68,35 +75,43 @@ def test_deps_core_kt_jvm_library(test):
68
75
attr = attr .label (allow_single_file = True ),
69
76
value = got + "lib.srcjar" ,
70
77
),
71
- "transitive_deps" : Want (
78
+ "inputs" : Want (
79
+ attr = attr .label_list (allow_empty = True , allow_files = True ),
80
+ value = [got_src , have + "lib.jar" ],
81
+ ),
82
+ "transitive_compile_deps" : Want (
72
83
attr = attr .label_list (providers = [[JavaInfo ], [KtJvmInfo ]]),
73
- value = [
74
- have ,
75
- ],
84
+ value = [got , have ],
85
+ ),
86
+ "transitive_runtime_deps" : Want (
87
+ attr = attr .label_list (providers = [[JavaInfo ], [KtJvmInfo ]]),
88
+ value = [got ],
76
89
),
77
90
},
78
91
)
79
92
80
- def test_deps_core_kt_jvm_binary (test ):
93
+ def _test_deps_core (test , rule_under_test , ** kwargs ):
81
94
have = test .have (
82
- core_kt_jvm_binary ,
95
+ rule_under_test ,
83
96
name = "have" ,
84
97
srcs = [
85
98
test .artifact ("hold.kt" ),
86
99
],
87
100
deps = [
88
101
],
102
+ ** kwargs
89
103
)
90
104
91
105
got = test .got (
92
- core_kt_jvm_binary ,
106
+ rule_under_test ,
93
107
name = "got" ,
94
108
srcs = [
95
109
test .artifact ("gave.kt" ),
96
110
],
97
111
deps = [
98
112
have ,
99
113
],
114
+ ** kwargs
100
115
)
101
116
test .claim (
102
117
got = got ,
@@ -110,53 +125,35 @@ def test_deps_core_kt_jvm_binary(test):
110
125
attr = attr .label (allow_single_file = True ),
111
126
value = got + "lib.srcjar" ,
112
127
),
113
- "transitive_deps" : Want (
128
+ "inputs" : Want (
129
+ attr = attr .label_list (allow_empty = True , allow_files = True ),
130
+ value = [have + "lib.jar" ],
131
+ ),
132
+ "transitive_compile_deps" : Want (
114
133
attr = attr .label_list (providers = [[JavaInfo ], [KtJvmInfo ]]),
115
134
value = [
116
135
have ,
136
+ got ,
117
137
],
118
138
),
119
- },
120
- )
121
-
122
- def test_no_deps_core_kt_jvm_library (test ):
123
- got = test .got (
124
- core_kt_jvm_library ,
125
- name = "got" ,
126
- srcs = [
127
- test .artifact ("a.kt" ),
128
- ],
129
- deps = [
130
- ],
131
- )
132
- test .claim (
133
- got = got ,
134
- what = _outputs ,
135
- wants = {
136
- "class_jar" : Want (
137
- attr = attr .label (allow_single_file = True ),
138
- value = got + "lib.jar" ,
139
- ),
140
- "source_jar" : Want (
141
- attr = attr .label (allow_single_file = True ),
142
- value = got + "lib.srcjar" ,
143
- ),
144
- "transitive_deps" : Want (
139
+ "transitive_runtime_deps" : Want (
145
140
attr = attr .label_list (providers = [[JavaInfo ], [KtJvmInfo ]]),
146
- value = [],
141
+ value = [got ],
147
142
),
148
143
},
149
144
)
150
145
151
- def test_no_deps_core_kt_jvm_binary (test ):
146
+ def test_no_deps_core (test , rule_under_test , ** kwargs ):
147
+ have_src = test .artifact ("a.kt" )
152
148
got = test .got (
153
- core_kt_jvm_binary ,
149
+ rule_under_test ,
154
150
name = "got" ,
155
151
srcs = [
156
- test . artifact ( "a.kt" ) ,
152
+ have_src ,
157
153
],
158
154
deps = [
159
155
],
156
+ ** kwargs
160
157
)
161
158
test .claim (
162
159
got = got ,
@@ -170,16 +167,46 @@ def test_no_deps_core_kt_jvm_binary(test):
170
167
attr = attr .label (allow_single_file = True ),
171
168
value = got + "lib.srcjar" ,
172
169
),
173
- "transitive_deps" : Want (
170
+ "transitive_compile_deps" : Want (
171
+ attr = attr .label_list (providers = [[JavaInfo ], [KtJvmInfo ]]),
172
+ value = [got ],
173
+ ),
174
+ "transitive_runtime_deps" : Want (
174
175
attr = attr .label_list (providers = [[JavaInfo ], [KtJvmInfo ]]),
175
- value = [],
176
+ value = [got ],
177
+ ),
178
+ "inputs" : Want (
179
+ attr = attr .label_list (allow_empty = True , allow_files = True ),
180
+ value = [have_src ],
176
181
),
177
182
},
178
183
)
179
184
185
+ def test_deps_core_kt_jvm_binary (test ):
186
+ _test_deps_core (test , core_kt_jvm_binary , main_class = "Foo" )
187
+
188
+ def test_neverlink_deps_core_kt_jvm_binary (test ):
189
+ _test_neverlink_deps (test , core_kt_jvm_binary , main_class = "Foo" )
190
+
191
+ def test_no_deps_core_kt_jvm_binary (test ):
192
+ test_no_deps_core (test , core_kt_jvm_binary , main_class = "Foo" )
193
+
194
+ def test_deps_core_kt_jvm_library (test ):
195
+ _test_deps_core (test , core_kt_jvm_library )
196
+
197
+ def test_neverlink_deps_core_kt_jvm_library (test ):
198
+ _test_neverlink_deps (test , core_kt_jvm_library )
199
+
200
+ def test_no_deps_core_kt_jvm_library (test ):
201
+ test_no_deps_core (test , core_kt_jvm_library )
202
+
180
203
def test_suite (name ):
181
204
suite (
182
205
name ,
183
- test_no_deps_core_kt_jvm_library ,
206
+ test_deps_core_kt_jvm_binary ,
184
207
test_deps_core_kt_jvm_library ,
208
+ test_neverlink_deps_core_kt_jvm_library ,
209
+ test_neverlink_deps_core_kt_jvm_binary ,
210
+ test_no_deps_core_kt_jvm_binary ,
211
+ test_no_deps_core_kt_jvm_library ,
185
212
)
0 commit comments