X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustdoc%2Ftest.rs;h=d8e382f6998ceb1b66e108d7770a04c8feabe92f;hb=aa1e6db70900cf5d11a843bc4234de0548677aba;hp=2966b9e9819b4771724bf3731f6fd9fa7194ad37;hpb=5ed2b5120bd875a7eb9fd8545d86eb1de1e41bce;p=rust.git diff --git a/src/librustdoc/test.rs b/src/librustdoc/test.rs index 2966b9e9819..d8e382f6998 100644 --- a/src/librustdoc/test.rs +++ b/src/librustdoc/test.rs @@ -42,7 +42,7 @@ use errors::emitter::ColorConfig; use clean::Attributes; -use html::markdown; +use html::markdown::{self, ErrorCodes, LangString}; #[derive(Clone, Default)] pub struct TestOptions { @@ -73,7 +73,7 @@ pub fn run(input_path: &Path, maybe_sysroot: maybe_sysroot.clone().or_else( || Some(env::current_exe().unwrap().parent().unwrap().parent().unwrap().to_path_buf())), search_paths: libs.clone(), - crate_types: vec![config::CrateTypeDylib], + crate_types: vec![config::CrateType::Dylib], cg: cg.clone(), externs: externs.clone(), unstable_features: UnstableFeatures::from_environment(), @@ -83,7 +83,7 @@ pub fn run(input_path: &Path, ..config::basic_debugging_options() }, edition, - ..config::basic_options().clone() + ..config::Options::default() }; driver::spawn_thread_pool(sessopts, |sessopts| { let codemap = Lrc::new(CodeMap::new(sessopts.file_path_mapping())); @@ -145,7 +145,8 @@ pub fn run(input_path: &Path, let mut hir_collector = HirCollector { sess: &sess, collector: &mut collector, - map: &map + map: &map, + codes: ErrorCodes::from(sess.opts.unstable_features.is_nightly_build()), }; hir_collector.visit_testable("".to_string(), &krate.attrs, |this| { intravisit::walk_crate(this, krate); @@ -215,7 +216,7 @@ fn run_test(test: &str, cratename: &str, filename: &FileName, line: usize, maybe_sysroot: maybe_sysroot.or_else( || Some(env::current_exe().unwrap().parent().unwrap().parent().unwrap().to_path_buf())), search_paths: libs, - crate_types: vec![config::CrateTypeExecutable], + crate_types: vec![config::CrateType::Executable], output_types: outputs, externs, cg: config::CodegenOptions { @@ -229,7 +230,7 @@ fn run_test(test: &str, cratename: &str, filename: &FileName, line: usize, ..config::basic_debugging_options() }, edition, - ..config::basic_options().clone() + ..config::Options::default() }; // Shuffle around a few input and output handles here. We're going to pass @@ -533,10 +534,8 @@ fn generate_name(&self, line: usize, filename: &FileName) -> String { format!("{} - {} (line {})", filename, self.names.join("::"), line) } - pub fn add_test(&mut self, test: String, - should_panic: bool, no_run: bool, should_ignore: bool, - as_test_harness: bool, compile_fail: bool, error_codes: Vec, - line: usize, filename: FileName, allow_fail: bool) { + pub fn add_test(&mut self, test: String, config: LangString, line: usize) { + let filename = self.get_filename(); let name = self.generate_name(line, &filename); let cfgs = self.cfgs.clone(); let libs = self.libs.clone(); @@ -551,10 +550,10 @@ pub fn add_test(&mut self, test: String, self.tests.push(testing::TestDescAndFn { desc: testing::TestDesc { name: testing::DynTestName(name.clone()), - ignore: should_ignore, + ignore: config.ignore, // compiler failures are test failures should_panic: testing::ShouldPanic::No, - allow_fail, + allow_fail: config.allow_fail, }, testfn: testing::DynTestFn(box move || { let panic = io::set_panic(None); @@ -572,11 +571,11 @@ pub fn add_test(&mut self, test: String, libs, cg, externs, - should_panic, - no_run, - as_test_harness, - compile_fail, - error_codes, + config.should_panic, + config.no_run, + config.test_harness, + config.compile_fail, + config.error_codes, &opts, maybe_sysroot, linker, @@ -604,7 +603,7 @@ pub fn set_position(&mut self, position: Span) { self.position = position; } - pub fn get_filename(&self) -> FileName { + fn get_filename(&self) -> FileName { if let Some(ref codemap) = self.codemap { let filename = codemap.span_to_filename(self.position); if let FileName::Real(ref filename) = filename { @@ -664,7 +663,8 @@ pub fn register_header(&mut self, name: &str, level: u32) { struct HirCollector<'a, 'hir: 'a> { sess: &'a session::Session, collector: &'a mut Collector, - map: &'a hir::map::Map<'hir> + map: &'a hir::map::Map<'hir>, + codes: ErrorCodes, } impl<'a, 'hir> HirCollector<'a, 'hir> { @@ -689,10 +689,12 @@ fn visit_testable(&mut self, // the collapse-docs pass won't combine sugared/raw doc attributes, or included files with // anything else, this will combine them for us if let Some(doc) = attrs.collapsed_doc_value() { - markdown::find_testable_code(&doc, - self.collector, - attrs.span.unwrap_or(DUMMY_SP), - Some(self.sess)); + self.collector.set_position(attrs.span.unwrap_or(DUMMY_SP)); + let res = markdown::find_testable_code(&doc, self.collector, self.codes); + if let Err(err) = res { + self.sess.diagnostic().span_warn(attrs.span.unwrap_or(DUMMY_SP), + &err.to_string()); + } } nested(self);