blob: 5ffec39340f8b4d7e3ecb8fb752989a3b9bcfbfb [file] [log] [blame]
# This end-to-end test shows that we still generate correct bindings when layering check is
# disabled. Rust equivalent of layering check is still enforced when compiling user Rust code,
# but to be safe we work around it for generated bindings Rust code.
load("//common:crubit_wrapper_macros_oss.bzl", "crubit_cc_test", "crubit_rust_test")
load("//rs_bindings_from_cc/test:test_bindings.bzl", "crubit_test_cc_library")
package(default_applicable_licenses = ["//:license"])
crubit_rust_test(
name = "disabled_layering_check_test",
srcs = ["disabled_layering_check_test.rs"],
cc_deps = [
# :my_lib is needed here because user code has to respect layering check
":my_lib",
# Bindings for :top_lib directly depend on bindings of :my_lib, but :my_lib is only a
# transitive dependency which violates the layering check. This test will fail if :top_lib
# doesn't get compiled with :my_lib as direct.
":top_lib",
],
deps = [
"@crate_index//:googletest",
],
)
crubit_test_cc_library(
name = "top_lib",
srcs = ["top_lib.cc"],
hdrs = ["top_lib.h"],
features = ["-layering_check"],
deps = [":middleperson_without_public_headers"],
)
crubit_test_cc_library(
name = "middleperson_without_public_headers",
deps = [":my_lib"],
)
crubit_test_cc_library(
name = "my_lib",
srcs = ["my_lib.cc"],
hdrs = ["my_lib.h"],
)
# This test only exists to make sure :top_lib is disabling layering check correctly (layering
# checks are only validated on binary rules, not on library rules)
crubit_cc_test(
name = "layering_check_validation_test",
srcs = ["layering_check_validation_test.cc"],
deps = [":top_lib"],
)