diff options
Diffstat (limited to 'test/bindgen/bindgen_test.bzl')
-rw-r--r-- | test/bindgen/bindgen_test.bzl | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/test/bindgen/bindgen_test.bzl b/test/bindgen/bindgen_test.bzl new file mode 100644 index 00000000..a5adf5df --- /dev/null +++ b/test/bindgen/bindgen_test.bzl @@ -0,0 +1,53 @@ +"""Analysis test for for rust_bindgen_library rule.""" + +load("@rules_cc//cc:defs.bzl", "cc_library") +load("@rules_rust//bindgen:defs.bzl", "rust_bindgen_library") +load("@rules_rust//rust:defs.bzl", "rust_binary") +load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite") + +def _test_cc_linkopt_impl(env, target): + # Assert + env.expect.that_action(target.actions[0]) \ + .contains_at_least_args(["--codegen=link-arg=-shared"]) + +def _test_cc_linkopt(name): + # Arrange + cc_library( + name = name + "_cc", + srcs = ["simple.cc"], + hdrs = ["simple.h"], + linkopts = ["-shared"], + tags = ["manual"], + ) + rust_bindgen_library( + name = name + "_rust_bindgen", + cc_lib = name + "_cc", + header = "simple.h", + tags = ["manual"], + edition = "2021", + ) + rust_binary( + name = name + "_rust_binary", + srcs = ["main.rs"], + deps = [name + "_rust_bindgen"], + tags = ["manual"], + edition = "2021", + ) + + # Act + # TODO: Use targets attr to also verify `rust_bindgen_library` not having + # the linkopt after https://github.com/bazelbuild/rules_testing/issues/67 + # is released + analysis_test( + name = name, + target = name + "_rust_binary", + impl = _test_cc_linkopt_impl, + ) + +def bindgen_test_suite(name): + test_suite( + name = name, + tests = [ + _test_cc_linkopt, + ], + ) |