diff --git a/src/report/display.rs b/src/report/display.rs index bf03f14d..b28d9316 100644 --- a/src/report/display.rs +++ b/src/report/display.rs @@ -17,6 +17,7 @@ impl ResultName for FailureReason { FailureReason::ICE => "ICE".into(), FailureReason::CompilerError(_) => "compiler error".into(), FailureReason::DependsOn(_) => "faulty deps".into(), + FailureReason::CompilerDiagnosticChange => "compiler diagnostic changed".into(), } } @@ -27,6 +28,7 @@ impl ResultName for FailureReason { | FailureReason::NetworkAccess | FailureReason::Timeout | FailureReason::OOM + | FailureReason::CompilerDiagnosticChange | FailureReason::ICE => self.short_name(), } } diff --git a/src/results/mod.rs b/src/results/mod.rs index 05d49f30..9913ff64 100644 --- a/src/results/mod.rs +++ b/src/results/mod.rs @@ -199,6 +199,7 @@ pub enum FailureReason { Timeout, ICE, NetworkAccess, + CompilerDiagnosticChange, CompilerError(BTreeSet), DependsOn(BTreeSet), } @@ -230,6 +231,7 @@ impl ::std::fmt::Display for FailureReason { .collect::>() .join(", "), ), + FailureReason::CompilerDiagnosticChange => write!(f, "compiler-diagnostic-change"), } } } @@ -274,7 +276,10 @@ impl ::std::str::FromStr for FailureReason { impl FailureReason { pub(crate) fn is_spurious(&self) -> bool { match *self { - FailureReason::OOM | FailureReason::Timeout | FailureReason::NetworkAccess => true, + FailureReason::OOM + | FailureReason::Timeout + | FailureReason::NetworkAccess + | FailureReason::CompilerDiagnosticChange => true, FailureReason::CompilerError(_) | FailureReason::DependsOn(_) | FailureReason::Unknown diff --git a/src/runner/test.rs b/src/runner/test.rs index 4c60863c..a8d311d9 100644 --- a/src/runner/test.rs +++ b/src/runner/test.rs @@ -110,6 +110,7 @@ fn run_cargo( let mut did_ice = false; let mut did_network = false; + let mut did_trybuild = false; let mut error_codes = BTreeSet::new(); let mut deps = BTreeSet::new(); @@ -123,6 +124,9 @@ fn run_cargo( if line.contains("code: 111") && line.contains("Connection refused") { did_network = true; } + if line.contains("the environment variable TRYBUILD=overwrite") { + did_trybuild = true; + } // Avoid trying to deserialize non JSON output if !line.starts_with('{') { @@ -198,6 +202,8 @@ fn run_cargo( Err(e.context(FailureReason::CompilerError(error_codes)).into()) } else if did_network { Err(e.context(FailureReason::NetworkAccess).into()) + } else if did_trybuild { + Err(e.context(FailureReason::CompilerDiagnosticChange).into()) } else { Err(e.into()) }