diff options
| author | bors <bors@rust-lang.org> | 2018-02-18 03:12:14 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-02-18 03:12:14 +0000 |
| commit | e8f03b9438d6516fd7067cfda2f09c925d6d92f2 (patch) | |
| tree | 8cbee3557fe3f889b4b3eaed1761b1ba348a7360 /src/tools | |
| parent | 5313e8728f028cb7914f3c9f02804158a5732b52 (diff) | |
| parent | 7948afdc53cabf9330662ec894bf668839880a3c (diff) | |
| download | rust-e8f03b9438d6516fd7067cfda2f09c925d6d92f2.tar.gz rust-e8f03b9438d6516fd7067cfda2f09c925d6d92f2.zip | |
Auto merge of #47544 - U007D:master, r=nikomatsakis
Relax termination_trait's error bound As per [this conversation](https://github.com/withoutboats/failure/issues/130#issuecomment-358572413) with @withoutboats and @bkchr
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/compiletest/src/header.rs | 13 | ||||
| -rw-r--r-- | src/tools/compiletest/src/runtest.rs | 13 |
2 files changed, 20 insertions, 6 deletions
diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs index 80750f9a3fe..d4d3d6c6e9a 100644 --- a/src/tools/compiletest/src/header.rs +++ b/src/tools/compiletest/src/header.rs @@ -232,6 +232,7 @@ pub struct TestProps { // customized normalization rules pub normalize_stdout: Vec<(String, String)>, pub normalize_stderr: Vec<(String, String)>, + pub failure_status: i32, } impl TestProps { @@ -260,6 +261,7 @@ impl TestProps { run_pass: false, normalize_stdout: vec![], normalize_stderr: vec![], + failure_status: 101, } } @@ -383,6 +385,10 @@ impl TestProps { if let Some(rule) = config.parse_custom_normalization(ln, "normalize-stderr") { self.normalize_stderr.push(rule); } + + if let Some(code) = config.parse_failure_status(ln) { + self.failure_status = code; + } }); for key in &["RUST_TEST_NOCAPTURE", "RUST_TEST_THREADS"] { @@ -488,6 +494,13 @@ impl Config { self.parse_name_directive(line, "pretty-compare-only") } + fn parse_failure_status(&self, line: &str) -> Option<i32> { + match self.parse_name_value_directive(line, "failure-status") { + Some(code) => code.trim().parse::<i32>().ok(), + _ => None, + } + } + fn parse_must_compile_successfully(&self, line: &str) -> bool { self.parse_name_directive(line, "must-compile-successfully") } diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index bef085e17ea..c0f82d56d80 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -295,11 +295,14 @@ impl<'test> TestCx<'test> { } fn check_correct_failure_status(&self, proc_res: &ProcRes) { - // The value the rust runtime returns on failure - const RUST_ERR: i32 = 101; - if proc_res.status.code() != Some(RUST_ERR) { + let expected_status = Some(self.props.failure_status); + let received_status = proc_res.status.code(); + + if expected_status != received_status { self.fatal_proc_rec( - &format!("failure produced the wrong error: {}", proc_res.status), + &format!("Error: expected failure status ({:?}) but received status {:?}.", + expected_status, + received_status), proc_res, ); } @@ -320,7 +323,6 @@ impl<'test> TestCx<'test> { ); let proc_res = self.exec_compiled_test(); - if !proc_res.status.success() { self.fatal_proc_rec("test run failed!", &proc_res); } @@ -499,7 +501,6 @@ impl<'test> TestCx<'test> { expected, actual ); - panic!(); } } |
