Provide test configuration through struct
This is far more sound than passing many different arguments of the same type.
This commit is contained in:
parent
ad40e4517f
commit
de5cebdba5
2 changed files with 21 additions and 28 deletions
|
|
@ -513,12 +513,7 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector, position: Sp
|
|||
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");
|
||||
|
|
@ -543,16 +538,16 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector, position: Sp
|
|||
}
|
||||
|
||||
#[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 {
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ use errors;
|
|||
use errors::emitter::ColorConfig;
|
||||
|
||||
use clean::Attributes;
|
||||
use html::markdown;
|
||||
use html::markdown::{self, LangString};
|
||||
|
||||
#[derive(Clone, Default)]
|
||||
pub struct TestOptions {
|
||||
|
|
@ -533,10 +533,8 @@ impl Collector {
|
|||
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();
|
||||
|
|
@ -551,10 +549,10 @@ impl Collector {
|
|||
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 +570,11 @@ impl Collector {
|
|||
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 +602,7 @@ impl Collector {
|
|||
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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue