| """Unittests for rust rules.""" |
| |
| load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") |
| load("//rust:defs.bzl", "rust_common", "rust_library") |
| |
| def _transitive_crate_outputs_test_impl(ctx): |
| env = analysistest.begin(ctx) |
| tut = analysistest.target_under_test(env) |
| transitive_crate_outputs = tut[rust_common.dep_info].transitive_crate_outputs.to_list() |
| |
| # Check that the non-crate output baz.a didn't find its way into transitive_crate_outputs |
| # while the bar.rlib did. |
| asserts.equals(env, len(transitive_crate_outputs), 1) |
| asserts.equals(env, transitive_crate_outputs[0].extension, "rlib") |
| |
| return analysistest.end(env) |
| |
| transitive_crate_outputs_test = analysistest.make(_transitive_crate_outputs_test_impl) |
| |
| def _transitive_crate_outputs_test(): |
| rust_library( |
| name = "foo", |
| srcs = ["foo.rs"], |
| edition = "2018", |
| deps = [":bar", ":baz"], |
| ) |
| |
| rust_library( |
| name = "bar", |
| srcs = ["bar.rs"], |
| edition = "2018", |
| ) |
| |
| # buildifier: disable=native-cc |
| native.cc_library( |
| name = "baz", |
| srcs = ["baz.cc"], |
| ) |
| |
| transitive_crate_outputs_test( |
| name = "transitive_crate_outputs_test", |
| target_under_test = ":foo", |
| ) |
| |
| def transitive_crate_outputs_test_suite(name): |
| """Entry-point macro called from the BUILD file. |
| |
| Args: |
| name: Name of the macro. |
| """ |
| _transitive_crate_outputs_test() |
| |
| native.test_suite( |
| name = name, |
| tests = [ |
| ":transitive_crate_outputs_test", |
| ], |
| ) |