let text = lines.collect::<Vec<Cow<str>>>().join("\n");
nb_lines += doc[prev_offset..offset].lines().count();
let line = tests.get_line() + (nb_lines - 1);
- let filename = tests.get_filename();
- tests.add_test(text.to_owned(),
- block_info.should_panic, block_info.no_run,
- block_info.ignore, block_info.test_harness,
- block_info.compile_fail, block_info.error_codes,
- line, filename, block_info.allow_fail);
+ tests.add_test(text, block_info, line);
prev_offset = offset;
} else {
handler.span_warn(position, "invalid start of a new code block");
}
#[derive(Eq, PartialEq, Clone, Debug)]
-struct LangString {
+pub struct LangString {
original: String,
- should_panic: bool,
- no_run: bool,
- ignore: bool,
- rust: bool,
- test_harness: bool,
- compile_fail: bool,
- error_codes: Vec<String>,
- allow_fail: bool,
+ pub should_panic: bool,
+ pub no_run: bool,
+ pub ignore: bool,
+ pub rust: bool,
+ pub test_harness: bool,
+ pub compile_fail: bool,
+ pub error_codes: Vec<String>,
+ pub allow_fail: bool,
}
impl LangString {
use errors::emitter::ColorConfig;
use clean::Attributes;
-use html::markdown;
+use html::markdown::{self, LangString};
#[derive(Clone, Default)]
pub struct TestOptions {
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<String>,
- 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();
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);
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,
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 {