"""Unittests for rust rules.""" load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") load( "//rust:defs.bzl", "rust_binary", "rust_library", "rust_shared_library", "rust_static_library", ) def _check_runfiles_test_impl(ctx): env = analysistest.begin(ctx) tut = analysistest.target_under_test(env) runfiles = tut[DefaultInfo].default_runfiles.files.to_list() asserts.true(env, _is_in_runfiles("libbar.so", runfiles)) return analysistest.end(env) def _is_in_runfiles(name, runfiles): for file in runfiles: if file.basename == name: return True return False check_runfiles_test = analysistest.make(_check_runfiles_test_impl) def _check_runfiles_test(): rust_library( name = "foo_lib", srcs = ["foo.rs"], edition = "2018", deps = [":libbar.so"], ) rust_binary( name = "foo_bin", srcs = ["foo_main.rs"], edition = "2018", deps = [":libbar.so"], ) rust_shared_library( name = "foo_dylib", srcs = ["foo.rs"], edition = "2018", deps = [":libbar.so"], ) rust_static_library( name = "foo_static", srcs = ["foo.rs"], edition = "2018", deps = [":libbar.so"], ) # buildifier: disable=native-cc native.cc_binary( name = "libbar.so", srcs = ["bar.cc"], linkshared = True, ) check_runfiles_test( name = "check_runfiles_lib_test", target_under_test = ":foo_lib", ) check_runfiles_test( name = "check_runfiles_bin_test", target_under_test = ":foo_bin", ) check_runfiles_test( name = "check_runfiles_dylib_test", target_under_test = ":foo_dylib", ) check_runfiles_test( name = "check_runfiles_static_test", target_under_test = ":foo_static", ) def check_runfiles_test_suite(name): """Entry-point macro called from the BUILD file. Args: name: Name of the macro. """ _check_runfiles_test() native.test_suite( name = name, tests = [ ":check_runfiles_lib_test", ":check_runfiles_bin_test", ":check_runfiles_dylib_test", ":check_runfiles_static_test", ], )