blob: 8dfb2ed847e5750efe7967e90fffbdb663d3f4de [file] [log] [blame]
"""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",
],
)