Skip to content

Commit adf85d3

Browse files
author
Jorge Aparicio
committed
libtest: add a --skip flag to the test runner
This flag takes a FILTER argument and instructs the test runner to skip the tests whose names contain the word FILTER. --skip can be used several times.
1 parent 2c2552b commit adf85d3

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/libtest/lib.rs

+10
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,7 @@ pub struct TestOpts {
303303
pub color: ColorConfig,
304304
pub quiet: bool,
305305
pub test_threads: Option<usize>,
306+
pub skip: Vec<String>,
306307
}
307308

308309
impl TestOpts {
@@ -318,6 +319,7 @@ impl TestOpts {
318319
color: AutoColor,
319320
quiet: false,
320321
test_threads: None,
322+
skip: vec![],
321323
}
322324
}
323325
}
@@ -337,6 +339,8 @@ fn optgroups() -> Vec<getopts::OptGroup> {
337339
task, allow printing directly"),
338340
getopts::optopt("", "test-threads", "Number of threads used for running tests \
339341
in parallel", "n_threads"),
342+
getopts::optmulti("", "skip", "Skip tests whose names contain FILTER (this flag can \
343+
be used multiple times)","FILTER"),
340344
getopts::optflag("q", "quiet", "Display one character per test instead of one line"),
341345
getopts::optopt("", "color", "Configure coloring of output:
342346
auto = colorize if stdout is a tty and tests are run on serially (default);
@@ -446,6 +450,7 @@ pub fn parse_opts(args: &[String]) -> Option<OptRes> {
446450
color: color,
447451
quiet: quiet,
448452
test_threads: test_threads,
453+
skip: matches.opt_strs("skip"),
449454
};
450455

451456
Some(Ok(test_opts))
@@ -1095,6 +1100,11 @@ pub fn filter_tests(opts: &TestOpts, tests: Vec<TestDescAndFn>) -> Vec<TestDescA
10951100
}
10961101
};
10971102

1103+
// Skip tests that match any of the skip filters
1104+
filtered = filtered.into_iter()
1105+
.filter(|t| !opts.skip.iter().any(|sf| t.desc.name.as_slice().contains(&sf[..])))
1106+
.collect();
1107+
10981108
// Maybe pull out the ignored test and unignore them
10991109
filtered = if !opts.run_ignored {
11001110
filtered

0 commit comments

Comments
 (0)