From 8aed695d694a11c045e16bea3837ebc1bc67ffe8 Mon Sep 17 00:00:00 2001 From: Erik Gilling Date: Tue, 2 May 2023 21:54:55 +0000 Subject: [PATCH 1/2] rustdoc_test: Apply prefix stripping to proc_macro dependencies. Without stripping the prefix, rustdoc can not find the proc macro shared library. --- rust/private/rustdoc_test.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/private/rustdoc_test.bzl b/rust/private/rustdoc_test.bzl index 1ff886f0ae..da40d42b29 100644 --- a/rust/private/rustdoc_test.bzl +++ b/rust/private/rustdoc_test.bzl @@ -67,7 +67,7 @@ def _construct_writer_arguments(ctx, test_runner, opt_test_params, action, crate root = crate_info.output.root.path if not root in roots: roots.append(root) - for dep in crate_info.deps.to_list(): + for dep in crate_info.deps.to_list() + crate_info.proc_macro_deps.to_list(): dep_crate_info = getattr(dep, "crate_info", None) dep_dep_info = getattr(dep, "dep_info", None) if dep_crate_info: From 3e6bb710479cb3b09a603912cc841e97513df2a5 Mon Sep 17 00:00:00 2001 From: Armando Montanez Date: Wed, 28 Aug 2024 10:19:10 -0700 Subject: [PATCH 2/2] Add test for rules_rust#1952 Adds a test that reproduces the bug mentioned in rules_rust#1952. --- test/unit/rustdoc/procmacro_in_rustdoc.rs | 9 +++++++++ test/unit/rustdoc/rustdoc_unit_test.bzl | 22 ++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 test/unit/rustdoc/procmacro_in_rustdoc.rs diff --git a/test/unit/rustdoc/procmacro_in_rustdoc.rs b/test/unit/rustdoc/procmacro_in_rustdoc.rs new file mode 100644 index 0000000000..7e77bb1164 --- /dev/null +++ b/test/unit/rustdoc/procmacro_in_rustdoc.rs @@ -0,0 +1,9 @@ +/// A different answer that only exists if using procmacros. +/// ``` +/// use rustdoc_proc_macro::make_answer; +/// make_answer!(); +/// assert_eq!(answer(), 42); +/// ``` +pub fn procmacro_answer() -> u32 { + 24 +} diff --git a/test/unit/rustdoc/rustdoc_unit_test.bzl b/test/unit/rustdoc/rustdoc_unit_test.bzl index 2d0bdb5c28..07882ef9a1 100644 --- a/test/unit/rustdoc/rustdoc_unit_test.bzl +++ b/test/unit/rustdoc/rustdoc_unit_test.bzl @@ -74,6 +74,14 @@ def _rustdoc_for_lib_with_proc_macro_test_impl(ctx): return analysistest.end(env) +def _rustdoc_for_lib_with_proc_macro_in_docs_test_impl(ctx): + env = analysistest.begin(ctx) + tut = analysistest.target_under_test(env) + + _common_rustdoc_checks(env, tut) + + return analysistest.end(env) + def _rustdoc_for_bin_with_transitive_proc_macro_test_impl(ctx): env = analysistest.begin(ctx) tut = analysistest.target_under_test(env) @@ -145,6 +153,7 @@ rustdoc_for_bin_with_cc_lib_test = analysistest.make(_rustdoc_for_bin_with_cc_li rustdoc_for_bin_with_transitive_cc_lib_test = analysistest.make(_rustdoc_for_bin_with_transitive_cc_lib_test_impl) rustdoc_for_proc_macro_test = analysistest.make(_rustdoc_for_proc_macro_test_impl) rustdoc_for_lib_with_proc_macro_test = analysistest.make(_rustdoc_for_lib_with_proc_macro_test_impl) +rustdoc_for_lib_with_proc_macro_in_docs_test = analysistest.make(_rustdoc_for_lib_with_proc_macro_in_docs_test_impl) rustdoc_for_bin_with_transitive_proc_macro_test = analysistest.make(_rustdoc_for_bin_with_transitive_proc_macro_test_impl) rustdoc_for_lib_with_cc_lib_test = analysistest.make(_rustdoc_for_lib_with_cc_lib_test_impl) rustdoc_with_args_test = analysistest.make(_rustdoc_with_args_test_impl) @@ -234,6 +243,13 @@ def _define_targets(): crate_features = ["with_proc_macro"], ) + _target_maker( + rust_library, + name = "lib_with_proc_macro_in_docs", + srcs = ["procmacro_in_rustdoc.rs"], + proc_macro_deps = [":rustdoc_proc_macro"], + ) + _target_maker( rust_library, name = "lib_nodep_with_proc_macro", @@ -371,6 +387,11 @@ def rustdoc_test_suite(name): target_under_test = ":rustdoc_proc_macro_doc", ) + rustdoc_for_lib_with_proc_macro_in_docs_test( + name = "rustdoc_for_lib_with_proc_macro_in_docs_test", + target_under_test = ":lib_with_proc_macro_in_docs_doc", + ) + rustdoc_for_lib_with_proc_macro_test( name = "rustdoc_for_lib_with_proc_macro_test", target_under_test = ":lib_with_proc_macro_doc", @@ -414,6 +435,7 @@ def rustdoc_test_suite(name): ":rustdoc_for_bin_with_cc_lib_test", ":rustdoc_for_bin_with_transitive_cc_lib_test", ":rustdoc_for_proc_macro_test", + ":rustdoc_for_lib_with_proc_macro_in_docs_test", ":rustdoc_for_lib_with_proc_macro_test", ":rustdoc_for_lib_with_cc_lib_test", ":rustdoc_with_args_test",