1"""Unittests for rust rules.""" 2 3load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") 4load("@rules_cc//cc:defs.bzl", "cc_library") 5load("//rust:defs.bzl", "rust_library") 6 7def _interleaving_cc_link_order_test_impl(ctx): 8 env = analysistest.begin(ctx) 9 tut = analysistest.target_under_test(env) 10 cc_info = tut[CcInfo] 11 linker_inputs = cc_info.linking_context.linker_inputs.to_list() 12 a = linker_inputs[0] 13 b = linker_inputs[1] 14 c = linker_inputs[2] 15 d = linker_inputs[3] 16 e = linker_inputs[4] 17 18 asserts.equals(env, "a", a.owner.name) 19 asserts.equals(env, "b", b.owner.name) 20 asserts.equals(env, "c", c.owner.name) 21 asserts.equals(env, "d", d.owner.name) 22 asserts.equals(env, "e", e.owner.name) 23 24 return analysistest.end(env) 25 26interleaving_cc_link_order_test = analysistest.make(_interleaving_cc_link_order_test_impl) 27 28def _interleaving_link_order_test(): 29 rust_library( 30 name = "a", 31 srcs = ["a.rs"], 32 edition = "2018", 33 deps = [":b"], 34 ) 35 cc_library( 36 name = "b", 37 srcs = ["b.cc"], 38 deps = [":c"], 39 ) 40 rust_library( 41 name = "c", 42 srcs = ["c.rs"], 43 edition = "2018", 44 deps = [":d"], 45 ) 46 cc_library( 47 name = "d", 48 srcs = ["d.cc"], 49 deps = [":e"], 50 ) 51 rust_library( 52 name = "e", 53 srcs = ["e.rs"], 54 edition = "2018", 55 ) 56 57 interleaving_cc_link_order_test( 58 name = "interleaving_cc_link_order_test", 59 target_under_test = ":a", 60 ) 61 62def interleaved_cc_info_test_suite(name): 63 """Entry-point macro called from the BUILD file. 64 65 Args: 66 name: Name of the macro. 67 """ 68 _interleaving_link_order_test() 69 70 native.test_suite( 71 name = name, 72 tests = [ 73 ":interleaving_cc_link_order_test", 74 ], 75 ) 76