Updates rust_test to use main.rs as the root when use_libtest_harness is false (#1518)
diff --git a/rust/private/rust.bzl b/rust/private/rust.bzl
index 6ebfbea..4bcf648 100644
--- a/rust/private/rust.bzl
+++ b/rust/private/rust.bzl
@@ -458,7 +458,8 @@
)
else:
if not crate_root:
- crate_root = crate_root_src(ctx.attr.name, ctx.files.srcs, "lib")
+ crate_root_type = "lib" if ctx.attr.use_libtest_harness else "bin"
+ crate_root = crate_root_src(ctx.attr.name, ctx.files.srcs, crate_root_type)
output_hash = determine_output_hash(crate_root, ctx.label)
output = ctx.actions.declare_file(
diff --git a/test/unit/use_libtest_harness/main.rs b/test/unit/use_libtest_harness/main.rs
new file mode 100644
index 0000000..f328e4d
--- /dev/null
+++ b/test/unit/use_libtest_harness/main.rs
@@ -0,0 +1 @@
+fn main() {}
diff --git a/test/unit/use_libtest_harness/use_libtest_harness_test.bzl b/test/unit/use_libtest_harness/use_libtest_harness_test.bzl
index 87296a5..32c51e6 100644
--- a/test/unit/use_libtest_harness/use_libtest_harness_test.bzl
+++ b/test/unit/use_libtest_harness/use_libtest_harness_test.bzl
@@ -24,8 +24,19 @@
assert_list_contains_adjacent_elements(env, action.argv, ["--cfg", "test"])
return analysistest.end(env)
+def _use_libtest_harness_rustc_noharness_main_flags_test_impl(ctx):
+ env = analysistest.begin(ctx)
+ tut = analysistest.target_under_test(env)
+ action = tut.actions[0]
+ assert_action_mnemonic(env, action, "Rustc")
+ assert_argv_contains(env, action, "test/unit/use_libtest_harness/main.rs")
+ assert_argv_contains_not(env, action, "--test")
+ assert_list_contains_adjacent_elements(env, action.argv, ["--cfg", "test"])
+ return analysistest.end(env)
+
use_libtest_harness_rustc_flags_test = analysistest.make(_use_libtest_harness_rustc_flags_test_impl)
use_libtest_harness_rustc_noharness_flags_test = analysistest.make(_use_libtest_harness_rustc_noharness_flags_test_impl)
+use_libtest_harness_rustc_noharness_main_flags_test = analysistest.make(_use_libtest_harness_rustc_noharness_main_flags_test_impl)
def _use_libtest_harness_test():
rust_test(
@@ -41,6 +52,16 @@
use_libtest_harness = False,
)
+ rust_test(
+ name = "mytest_noharness_main",
+ srcs = [
+ "main.rs",
+ "mytest.rs",
+ ],
+ edition = "2018",
+ use_libtest_harness = False,
+ )
+
use_libtest_harness_rustc_flags_test(
name = "use_libtest_harness_rustc_flags_test",
target_under_test = ":mytest",
@@ -51,6 +72,11 @@
target_under_test = ":mytest_noharness",
)
+ use_libtest_harness_rustc_noharness_main_flags_test(
+ name = "use_libtest_harness_rustc_noharness_main_flags_test",
+ target_under_test = ":mytest_noharness_main",
+ )
+
def use_libtest_harness_test_suite(name):
"""Entry-point macro called from the BUILD file.