From ea9f5f7bfefc532b93d997006efd960ae1705eab Mon Sep 17 00:00:00 2001 From: maxblack Date: Wed, 17 Sep 2025 10:05:05 +0000 Subject: [PATCH 1/2] Fail if both crate and crate_root attrs are specified on rust_test. --- rust/private/rust.bzl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/rust/private/rust.bzl b/rust/private/rust.bzl index 4f17143cc0..80d583af45 100644 --- a/rust/private/rust.bzl +++ b/rust/private/rust.bzl @@ -354,6 +354,11 @@ def _rust_test_impl(ctx): ctx.label, )) + if ctx.attr.crate and ctx.attr.crate_root: + fail("rust_test.crate and rust_test.crate_root are mutually exclusive. Update {} to use only one of these attributes".format( + ctx.label, + )) + if ctx.attr.crate: # Target is building the crate in `test` config crate = ctx.attr.crate[rust_common.crate_info] if rust_common.crate_info in ctx.attr.crate else ctx.attr.crate[rust_common.test_crate_info].crate @@ -386,7 +391,7 @@ def _rust_test_impl(ctx): # Need to consider all src files together when transforming srcs = depset(ctx.files.srcs, transitive = [crate.srcs]).to_list() compile_data = depset(ctx.files.compile_data, transitive = [crate.compile_data]).to_list() - srcs, compile_data, crate_root = transform_sources(ctx, srcs, compile_data, getattr(ctx.file, "crate_root", None)) + srcs, compile_data, crate_root = transform_sources(ctx, srcs, compile_data, crate_root = None) if crate.compile_data_targets: compile_data_targets = depset(ctx.attr.compile_data, transitive = [crate.compile_data_targets]) From 1e0a208945ffedfd2c0913f1c525ed17e2fe5106 Mon Sep 17 00:00:00 2001 From: maxblack Date: Wed, 17 Sep 2025 14:52:41 +0000 Subject: [PATCH 2/2] Make it explicit that crate_root return value of transform_sources is unused. --- rust/private/rust.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/private/rust.bzl b/rust/private/rust.bzl index 80d583af45..475ba669ad 100644 --- a/rust/private/rust.bzl +++ b/rust/private/rust.bzl @@ -391,7 +391,7 @@ def _rust_test_impl(ctx): # Need to consider all src files together when transforming srcs = depset(ctx.files.srcs, transitive = [crate.srcs]).to_list() compile_data = depset(ctx.files.compile_data, transitive = [crate.compile_data]).to_list() - srcs, compile_data, crate_root = transform_sources(ctx, srcs, compile_data, crate_root = None) + srcs, compile_data, _ = transform_sources(ctx, srcs, compile_data, crate_root = None) if crate.compile_data_targets: compile_data_targets = depset(ctx.attr.compile_data, transitive = [crate.compile_data_targets])