@@ -56,10 +56,34 @@ def _compile_data_propagates_to_rust_doc_test_impl(ctx):
5656
5757 return analysistest .end (env )
5858
59+ def _transitive_data_not_in_compile_inputs_test_impl (ctx ):
60+ env = analysistest .begin (ctx )
61+ target = analysistest .target_under_test (env )
62+
63+ rustc_action = None
64+ for action in target .actions :
65+ if action .mnemonic == "Rustc" :
66+ rustc_action = action
67+ break
68+
69+ asserts .false (env , rustc_action == None , "Expected a Rustc action" )
70+
71+ data_inputs = [i for i in rustc_action .inputs .to_list () if "transitive_data_dep.txt" in i .path ]
72+ asserts .equals (
73+ env ,
74+ 0 ,
75+ len (data_inputs ),
76+ "Expected transitive data dep file to NOT appear in Rustc action inputs, but found: " +
77+ str ([i .path for i in data_inputs ]),
78+ )
79+
80+ return analysistest .end (env )
81+
5982compile_data_propagates_to_crate_info_test = analysistest .make (_compile_data_propagates_to_crate_info_test_impl )
6083wrapper_rule_propagates_to_crate_info_test = analysistest .make (_wrapper_rule_propagates_to_crate_info_test_impl )
6184wrapper_rule_propagates_and_joins_compile_data_test = analysistest .make (_wrapper_rule_propagates_and_joins_compile_data_test_impl )
6285compile_data_propagates_to_rust_doc_test = analysistest .make (_compile_data_propagates_to_rust_doc_test_impl )
86+ transitive_data_not_in_compile_inputs_test = analysistest .make (_transitive_data_not_in_compile_inputs_test_impl )
6387
6488def _define_test_targets ():
6589 rust_library (
@@ -134,6 +158,41 @@ def _define_test_targets():
134158 crate = ":compile_data_gen_srcs" ,
135159 )
136160
161+ write_file (
162+ name = "transitive_data_dep_file" ,
163+ out = "transitive_data_dep.txt" ,
164+ content = ["transitive data dep" , "" ],
165+ newline = "unix" ,
166+ )
167+
168+ write_file (
169+ name = "lib_with_data_src" ,
170+ out = "lib_with_data.rs" ,
171+ content = ["pub fn hello() {}" , "" ],
172+ newline = "unix" ,
173+ )
174+
175+ rust_library (
176+ name = "lib_with_data" ,
177+ srcs = [":lib_with_data.rs" ],
178+ data = [":transitive_data_dep.txt" ],
179+ edition = "2021" ,
180+ )
181+
182+ write_file (
183+ name = "lib_depending_on_data_src" ,
184+ out = "lib_depending_on_data.rs" ,
185+ content = ["extern crate lib_with_data;" , "" ],
186+ newline = "unix" ,
187+ )
188+
189+ rust_library (
190+ name = "lib_depending_on_data" ,
191+ srcs = [":lib_depending_on_data.rs" ],
192+ deps = [":lib_with_data" ],
193+ edition = "2021" ,
194+ )
195+
137196def compile_data_test_suite (name ):
138197 """Entry-point macro called from the BUILD file.
139198
@@ -163,12 +222,18 @@ def compile_data_test_suite(name):
163222 target_under_test = ":compile_data_env_rust_doc" ,
164223 )
165224
225+ transitive_data_not_in_compile_inputs_test (
226+ name = "transitive_data_not_in_compile_inputs_test" ,
227+ target_under_test = ":lib_depending_on_data" ,
228+ )
229+
166230 native .test_suite (
167231 name = name ,
168232 tests = [
169233 ":compile_data_propagates_to_crate_info_test" ,
170234 ":wrapper_rule_propagates_to_crate_info_test" ,
171235 ":wrapper_rule_propagates_and_joins_compile_data_test" ,
172236 ":compile_data_propagates_to_rust_doc_test" ,
237+ ":transitive_data_not_in_compile_inputs_test" ,
173238 ],
174239 )
0 commit comments