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] _wrap_with_fmt_test(test_name, kwargs.get("tags", []))