@@ -2234,6 +2234,113 @@ public void javaCommonCompileNeverlink() throws Exception {
2234
2234
.isEqualTo ("plugin.jar libsomedep.jar" );
2235
2235
}
2236
2236
2237
+ @ Test
2238
+ public void javaInfoConstructorWithNeverlink () throws Exception {
2239
+ JavaToolchainTestUtil .writeBuildFileForJavaToolchain (scratch );
2240
+ scratch .file (
2241
+ "java/test/BUILD" ,
2242
+ "load(':custom_rule.bzl', 'java_custom_library')" ,
2243
+ "java_custom_library(name = 'somedep')" );
2244
+ scratch .file (
2245
+ "java/test/custom_rule.bzl" ,
2246
+ "def _impl(ctx):" ,
2247
+ " output_jar = ctx.actions.declare_file('lib' + ctx.label.name + '.jar')" ,
2248
+ " ctx.actions.write(output_jar, '')" ,
2249
+ " java_info = JavaInfo(" ,
2250
+ " output_jar = output_jar," ,
2251
+ " compile_jar = None," ,
2252
+ " neverlink = True," ,
2253
+ " )" ,
2254
+ " return [" ,
2255
+ " java_info" ,
2256
+ " ]" ,
2257
+ "java_custom_library = rule(" ,
2258
+ " implementation = _impl," ,
2259
+ " fragments = ['java']," ,
2260
+ " provides = [JavaInfo]," ,
2261
+ ")" );
2262
+
2263
+ ConfiguredTarget target = getConfiguredTarget ("//java/test:somedep" );
2264
+
2265
+ JavaInfo javaInfo = (JavaInfo ) target .get (JavaInfo .PROVIDER .getKey ());
2266
+ assertThat (javaInfo .isNeverlink ()).isTrue ();
2267
+ }
2268
+
2269
+ @ Test
2270
+ public void javaCommonMergeWithNeverlink () throws Exception {
2271
+ JavaToolchainTestUtil .writeBuildFileForJavaToolchain (scratch );
2272
+ scratch .file (
2273
+ "java/test/BUILD" ,
2274
+ "load(':custom_rule.bzl', 'java_custom_library')" ,
2275
+ "java_custom_library(name = 'somedep')" );
2276
+ scratch .file (
2277
+ "java/test/custom_rule.bzl" ,
2278
+ "def _impl(ctx):" ,
2279
+ " output_jar = ctx.actions.declare_file('lib' + ctx.label.name + '.jar')" ,
2280
+ " ctx.actions.write(output_jar, '')" ,
2281
+ " java_info_with_neverlink = JavaInfo(" ,
2282
+ " output_jar = output_jar," ,
2283
+ " compile_jar = None," ,
2284
+ " neverlink = True," ,
2285
+ " )" ,
2286
+ " java_info_without_neverlink = JavaInfo(" ,
2287
+ " output_jar = output_jar," ,
2288
+ " compile_jar = None," ,
2289
+ " )" ,
2290
+ " java_info = java_common.merge([java_info_with_neverlink, java_info_without_neverlink])" ,
2291
+ " return [" ,
2292
+ " java_info" ,
2293
+ " ]" ,
2294
+ "java_custom_library = rule(" ,
2295
+ " implementation = _impl," ,
2296
+ " fragments = ['java']," ,
2297
+ " provides = [JavaInfo]," ,
2298
+ ")" );
2299
+
2300
+ ConfiguredTarget target = getConfiguredTarget ("//java/test:somedep" );
2301
+
2302
+ JavaInfo javaInfo = (JavaInfo ) target .get (JavaInfo .PROVIDER .getKey ());
2303
+ assertThat (javaInfo .isNeverlink ()).isTrue ();
2304
+ }
2305
+
2306
+ @ Test
2307
+ public void javaCommonCompileWithNeverlink () throws Exception {
2308
+ JavaToolchainTestUtil .writeBuildFileForJavaToolchain (scratch );
2309
+ scratch .file (
2310
+ "java/test/BUILD" ,
2311
+ "load(':custom_rule.bzl', 'java_custom_library')" ,
2312
+ "java_custom_library(name = 'somedep'," ,
2313
+ " srcs = ['Dependency.java'])" );
2314
+ scratch .file (
2315
+ "java/test/custom_rule.bzl" ,
2316
+ "def _impl(ctx):" ,
2317
+ " output_jar = ctx.actions.declare_file('lib' + ctx.label.name + '.jar')" ,
2318
+ " java_info = java_common.compile(" ,
2319
+ " ctx," ,
2320
+ " source_files = ctx.files.srcs," ,
2321
+ " output = output_jar," ,
2322
+ " java_toolchain = ctx.attr._java_toolchain[java_common.JavaToolchainInfo]," ,
2323
+ " neverlink = True," ,
2324
+ " )" ,
2325
+ " return [" ,
2326
+ " java_info" ,
2327
+ " ]" ,
2328
+ "java_custom_library = rule(" ,
2329
+ " implementation = _impl," ,
2330
+ " attrs = {" ,
2331
+ " 'srcs': attr.label_list(allow_files=['.java'])," ,
2332
+ " '_java_toolchain': attr.label(default = Label('//java/com/google/test:toolchain'))," ,
2333
+ " }," ,
2334
+ " fragments = ['java']," ,
2335
+ " provides = [JavaInfo]," ,
2336
+ ")" );
2337
+
2338
+ ConfiguredTarget target = getConfiguredTarget ("//java/test:somedep" );
2339
+
2340
+ JavaInfo javaInfo = (JavaInfo ) target .get (JavaInfo .PROVIDER .getKey ());
2341
+ assertThat (javaInfo .isNeverlink ()).isTrue ();
2342
+ }
2343
+
2237
2344
/**
2238
2345
* Tests that java_common.compile propagates native libraries from deps, runtime_deps, and
2239
2346
* exports.
0 commit comments