1"""Unittests for rust rules.""" 2 3load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") 4load("//rust:defs.bzl", "rust_common", "rust_library") 5 6def _transitive_crate_outputs_test_impl(ctx): 7 env = analysistest.begin(ctx) 8 tut = analysistest.target_under_test(env) 9 transitive_crate_outputs = tut[rust_common.dep_info].transitive_crate_outputs.to_list() 10 11 # Check that the non-crate output baz.a didn't find its way into transitive_crate_outputs 12 # while the bar.rlib did. 13 asserts.equals(env, len(transitive_crate_outputs), 1) 14 asserts.equals(env, transitive_crate_outputs[0].extension, "rlib") 15 16 return analysistest.end(env) 17 18transitive_crate_outputs_test = analysistest.make(_transitive_crate_outputs_test_impl) 19 20def _transitive_crate_outputs_test(): 21 rust_library( 22 name = "foo", 23 srcs = ["foo.rs"], 24 edition = "2018", 25 deps = [":bar", ":baz"], 26 ) 27 28 rust_library( 29 name = "bar", 30 srcs = ["bar.rs"], 31 edition = "2018", 32 ) 33 34 # buildifier: disable=native-cc 35 native.cc_library( 36 name = "baz", 37 srcs = ["baz.cc"], 38 ) 39 40 transitive_crate_outputs_test( 41 name = "transitive_crate_outputs_test", 42 target_under_test = ":foo", 43 ) 44 45def transitive_crate_outputs_test_suite(name): 46 """Entry-point macro called from the BUILD file. 47 48 Args: 49 name: Name of the macro. 50 """ 51 _transitive_crate_outputs_test() 52 53 native.test_suite( 54 name = name, 55 tests = [ 56 ":transitive_crate_outputs_test", 57 ], 58 ) 59