blob: 07bf75d3327b9da2fd55011e33ff1fe404fc7e94 [file] [log] [blame] [edit]
load("@apple_rules_lint//lint:defs.bzl", "get_lint_config")
load(
"@rules_rust//rust:defs.bzl",
"rustfmt_test",
_rust_binary = "rust_binary",
_rust_library = "rust_library",
_rust_test = "rust_test",
_rust_test_suite = "rust_test_suite",
)
def _wrap_with_fmt_test(name, tags):
config = get_lint_config("rust-rustfmt", tags)
if config:
rustfmt_test(
name = "%s-fmt" % name,
targets = [
":%s" % name,
],
tags = [
"lint",
"rust-rustfmt",
"rustfmt",
],
)
def rust_library(name, **kwargs):
_rust_library(name = name, **kwargs)
_wrap_with_fmt_test(name, kwargs.get("tags", []))
def rust_binary(name, **kwargs):
_rust_binary(name = name, **kwargs)
_wrap_with_fmt_test(name, kwargs.get("tags", []))
def rust_test(name, **kwargs):
_rust_test(name = name, **kwargs)
_wrap_with_fmt_test(name, kwargs.get("tags", []))
def rust_test_suite(name, srcs = [], **kwargs):
_rust_test_suite(name = name, srcs = srcs, **kwargs)
for src in srcs:
if not src.endswith(".rs"):
fail("srcs should have `.rs` extensions")
# Prefixed with `name` to allow parameterization with macros
# The test name should not end with `.rs`
test_name = name + "_" + src[:-3] + "_test"
_wrap_with_fmt_test(test_name, kwargs.get("tags", []))