From 4dbe3eb65705c3a04a2c5f90b5c8a20b2a307990 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 31 Jul 2014 20:14:59 -0700 Subject: [PATCH] rustdoc: Use --crate-name with --test This ensures that the name of the crate is set from the command line for tests so the auto-injection of `extern crate ` in doc tests works correctly. --- src/librustdoc/lib.rs | 3 ++- src/librustdoc/test.rs | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index a89b7657287..ddd06e427d7 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -214,13 +214,14 @@ pub fn main_args(args: &[String]) -> int { Some(eh) => eh, None => return 3 }; + let crate_name = matches.opt_str("crate-name"); match (should_test, markdown_input) { (true, true) => { return markdown::test(input, libs, externs, test_args) } (true, false) => { - return test::run(input, cfgs, libs, externs, test_args) + return test::run(input, cfgs, libs, externs, test_args, crate_name) } (false, true) => return markdown::render(input, output.unwrap_or(Path::new("doc")), &matches, &external_html, diff --git a/src/librustdoc/test.rs b/src/librustdoc/test.rs index aef6af1677a..9df748e74e8 100644 --- a/src/librustdoc/test.rs +++ b/src/librustdoc/test.rs @@ -41,7 +41,8 @@ pub fn run(input: &str, cfgs: Vec, libs: HashSet, externs: core::Externs, - mut test_args: Vec) + mut test_args: Vec, + crate_name: Option) -> int { let input_path = Path::new(input); let input = driver::FileInput(input_path.clone()); @@ -87,7 +88,11 @@ pub fn run(input: &str, let mut v = RustdocVisitor::new(&*ctx, None); v.visit(&ctx.krate); - let krate = v.clean(); + let mut krate = v.clean(); + match crate_name { + Some(name) => krate.name = name, + None => {} + } let (krate, _) = passes::collapse_docs(krate); let (krate, _) = passes::unindent_comments(krate); -- GitLab