Add cpass to incremental tests
This commit is contained in:
parent
14c54b637b
commit
7650bd15d5
1 changed files with 35 additions and 15 deletions
|
@ -278,13 +278,15 @@ impl<'test> TestCx<'test> {
|
|||
Incremental => {
|
||||
let revision =
|
||||
self.revision.expect("incremental tests require a list of revisions");
|
||||
if revision.starts_with("rpass") || revision.starts_with("rfail") {
|
||||
if revision.starts_with("cpass")
|
||||
|| revision.starts_with("rpass")
|
||||
|| revision.starts_with("rfail")
|
||||
{
|
||||
true
|
||||
} else if revision.starts_with("cfail") {
|
||||
// FIXME: would be nice if incremental revs could start with "cpass"
|
||||
pm.is_some()
|
||||
} else {
|
||||
panic!("revision name must begin with rpass, rfail, or cfail");
|
||||
panic!("revision name must begin with cpass, rpass, rfail, or cfail");
|
||||
}
|
||||
}
|
||||
mode => panic!("unimplemented for mode {:?}", mode),
|
||||
|
@ -384,6 +386,20 @@ impl<'test> TestCx<'test> {
|
|||
}
|
||||
}
|
||||
|
||||
fn run_cpass_test(&self) {
|
||||
let emit_metadata = self.should_emit_metadata(self.pass_mode());
|
||||
let proc_res = self.compile_test(WillExecute::No, emit_metadata);
|
||||
|
||||
if !proc_res.status.success() {
|
||||
self.fatal_proc_rec("compilation failed!", &proc_res);
|
||||
}
|
||||
|
||||
// FIXME(#41968): Move this check to tidy?
|
||||
if !errors::load_errors(&self.testpaths.file, self.revision).is_empty() {
|
||||
self.fatal("compile-pass tests with expected warnings should be moved to ui/");
|
||||
}
|
||||
}
|
||||
|
||||
fn run_rpass_test(&self) {
|
||||
let emit_metadata = self.should_emit_metadata(self.pass_mode());
|
||||
let should_run = self.run_if_enabled();
|
||||
|
@ -393,17 +409,15 @@ impl<'test> TestCx<'test> {
|
|||
self.fatal_proc_rec("compilation failed!", &proc_res);
|
||||
}
|
||||
|
||||
// FIXME(#41968): Move this check to tidy?
|
||||
if !errors::load_errors(&self.testpaths.file, self.revision).is_empty() {
|
||||
self.fatal("run-pass tests with expected warnings should be moved to ui/");
|
||||
}
|
||||
|
||||
if let WillExecute::Disabled = should_run {
|
||||
return;
|
||||
}
|
||||
|
||||
// FIXME(#41968): Move this check to tidy?
|
||||
let expected_errors = errors::load_errors(&self.testpaths.file, self.revision);
|
||||
assert!(
|
||||
expected_errors.is_empty(),
|
||||
"run-pass tests with expected warnings should be moved to ui/"
|
||||
);
|
||||
|
||||
let proc_res = self.exec_compiled_test();
|
||||
if !proc_res.status.success() {
|
||||
self.fatal_proc_rec("test run failed!", &proc_res);
|
||||
|
@ -2903,10 +2917,11 @@ impl<'test> TestCx<'test> {
|
|||
fn run_incremental_test(&self) {
|
||||
// Basic plan for a test incremental/foo/bar.rs:
|
||||
// - load list of revisions rpass1, cfail2, rpass3
|
||||
// - each should begin with `rpass`, `cfail`, or `rfail`
|
||||
// - if `rpass`, expect compile and execution to succeed
|
||||
// - each should begin with `cpass`, `rpass`, `cfail`, or `rfail`
|
||||
// - if `cpass`, expect compilation to succeed, don't execute
|
||||
// - if `rpass`, expect compilation and execution to succeed
|
||||
// - if `cfail`, expect compilation to fail
|
||||
// - if `rfail`, expect execution to fail
|
||||
// - if `rfail`, expect compilation to succeed and execution to fail
|
||||
// - create a directory build/foo/bar.incremental
|
||||
// - compile foo/bar.rs with -C incremental=.../foo/bar.incremental and -C rpass1
|
||||
// - because name of revision starts with "rpass", expect success
|
||||
|
@ -2930,7 +2945,12 @@ impl<'test> TestCx<'test> {
|
|||
print!("revision={:?} props={:#?}", revision, self.props);
|
||||
}
|
||||
|
||||
if revision.starts_with("rpass") {
|
||||
if revision.starts_with("cpass") {
|
||||
if self.props.should_ice {
|
||||
self.fatal("can only use should-ice in cfail tests");
|
||||
}
|
||||
self.run_cpass_test();
|
||||
} else if revision.starts_with("rpass") {
|
||||
if self.props.should_ice {
|
||||
self.fatal("can only use should-ice in cfail tests");
|
||||
}
|
||||
|
@ -2943,7 +2963,7 @@ impl<'test> TestCx<'test> {
|
|||
} else if revision.starts_with("cfail") {
|
||||
self.run_cfail_test();
|
||||
} else {
|
||||
self.fatal("revision name must begin with rpass, rfail, or cfail");
|
||||
self.fatal("revision name must begin with cpass, rpass, rfail, or cfail");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue