22
33load ("@rules_testing//lib:analysis_test.bzl" , "analysis_test" , "test_suite" )
44load ("@rules_testing//lib:util.bzl" , "util" )
5+ load ("//java:java_library.bzl" , "java_library" )
6+ load ("//java/common:java_semantics.bzl" , "semantics" )
57load ("//java/toolchains:java_runtime.bzl" , "java_runtime" )
68load ("//java/toolchains:java_toolchain.bzl" , "java_toolchain" )
79load ("//test/java/testutil:java_toolchain_info_subject.bzl" , "java_toolchain_info_subject" )
10+ load ("//test/java/testutil:javac_action_subject.bzl" , "javac_action_subject" )
811
912def _declare_java_toolchain (* , name , ** kwargs ):
10- if "java_runtime" not in kwargs :
11- kwargs ["java_runtime" ] = name + "/runtime"
12- java_runtime (name = name + "/runtime" )
13+ java_runtime_name = name + "/runtime"
14+ java_runtime (name = java_runtime_name )
15+ toolchain_attrs = {
16+ "source_version" : "6" ,
17+ "target_version" : "6" ,
18+ "bootclasspath" : ["rt.jar" ],
19+ "xlint" : ["toto" ],
20+ "javacopts" : ["-Xmaxerrs 500" ],
21+ "compatible_javacopts" : {
22+ "android" : ["-XDandroidCompatible" ],
23+ "testonly" : ["-XDtestOnly" ],
24+ "public_visibility" : ["-XDpublicVisibility" ],
25+ },
26+ "tools" : [":javac_canary.jar" ],
27+ "javabuilder" : ":JavaBuilder_deploy.jar" ,
28+ "header_compiler" : ":turbine_canary_deploy.jar" ,
29+ "header_compiler_direct" : ":turbine_direct" ,
30+ "singlejar" : "singlejar" ,
31+ "ijar" : "ijar" ,
32+ "genclass" : "GenClass_deploy.jar" ,
33+ "timezone_data" : "tzdata.jar" ,
34+ "header_compiler_builtin_processors" : ["BuiltinProc1" , "BuiltinProc2" ],
35+ "reduced_classpath_incompatible_processors" : [
36+ "IncompatibleProc1" ,
37+ "IncompatibleProc2" ,
38+ ],
39+ "java_runtime" : java_runtime_name ,
40+ }
41+ toolchain_attrs .update (kwargs )
1342 util .helper_target (
1443 java_toolchain ,
44+ name = name + "/java_toolchain" ,
45+ ** toolchain_attrs
46+ )
47+ util .helper_target (
48+ native .toolchain ,
49+ name = name + "/toolchain" ,
50+ toolchain = name + "/java_toolchain" ,
51+ toolchain_type = semantics .JAVA_TOOLCHAIN_TYPE ,
52+ )
53+
54+ def _test_javac_gets_options (name ):
55+ _declare_java_toolchain (name = name )
56+ util .helper_target (
57+ java_library ,
58+ name = name + "/b" ,
59+ srcs = ["b.java" ],
60+ )
61+ util .helper_target (
62+ java_library ,
63+ name = name + "/a" ,
64+ srcs = ["a.java" ],
65+ deps = [Label (name + "/b" )],
66+ )
67+
68+ analysis_test (
1569 name = name ,
16- genclass = kwargs .get ("genclass" , "default_genclass.jar" ),
17- jacocorunner = kwargs .get ("jacocorunner" , None ),
18- javabuilder = kwargs .get ("javabuilder" , "default_javabuilder.jar" ),
19- java_runtime = kwargs ["java_runtime" ],
20- ijar = kwargs .get ("ijar" , "default_ijar.jar" ),
21- singlejar = kwargs .get ("singlejar" , "default_singlejar.jar" ),
70+ impl = _test_javac_gets_options_impl ,
71+ targets = {
72+ "a" : name + "/a" ,
73+ "b" : name + "/b" ,
74+ },
75+ config_settings = {
76+ "//command_line_option:java_header_compilation" : "true" ,
77+ "//command_line_option:extra_toolchains" : [Label (name + "/toolchain" )],
78+ },
2279 )
2380
81+ def _test_javac_gets_options_impl (env , targets ):
82+ assert_javac_action = javac_action_subject .of (env , targets .a , "{package}/lib{name}.jar" )
83+ assert_javac_action .source ().contains_exactly (["6" ])
84+ assert_javac_action .target ().contains_exactly (["6" ])
85+ assert_javac_action .xmaxerrs ().contains_exactly (["500" ])
86+ assert_javac_action .jar ().contains_exactly (["{package}/JavaBuilder_deploy.jar" ])
87+ assert_javac_action .inputs ().contains ("{package}/rt.jar" )
88+
89+ assert_argv = assert_javac_action .argv ()
90+ assert_argv .contains ("-Xlint:toto" )
91+ assert_argv .not_contains ("-g" )
92+
93+ assert_header_action = javac_action_subject .of (env , targets .b , "{package}/lib{name}-hjar.jar" )
94+ assert_header_action .argv ().contains ("{package}/turbine_direct" )
95+
2496def _test_jacocorunner (name ):
2597 _declare_java_toolchain (
26- name = name + "/java_toolchain" ,
98+ name = name ,
2799 jacocorunner = "myjacocorunner.jar" ,
28100 )
29101
@@ -43,5 +115,6 @@ def java_toolchain_tests(name):
43115 name = name ,
44116 tests = [
45117 _test_jacocorunner ,
118+ _test_javac_gets_options ,
46119 ],
47120 )
0 commit comments