@@ -48,24 +48,37 @@ pub(super) fn detect_broken<T>(res: Result<T, Error>) -> Result<T, Error> {
4848 match res {
4949 Ok ( ok) => Ok ( ok) ,
5050 Err ( err) => {
51- let mut reason = None ;
52-
5351 if let Some ( error) = err. downcast_ref ( ) {
54- reason = match * error {
55- PrepareError :: MissingCargoToml => Some ( BrokenReason :: CargoToml ) ,
56- PrepareError :: InvalidCargoTomlSyntax => Some ( BrokenReason :: CargoToml ) ,
57- PrepareError :: YankedDependencies ( _) => Some ( BrokenReason :: Yanked ) ,
58- PrepareError :: MissingDependencies ( _) => Some ( BrokenReason :: MissingDependencies ) ,
59- PrepareError :: PrivateGitRepository => Some ( BrokenReason :: MissingGitRepository ) ,
60- _ => None ,
61- }
62- }
52+ let reason = match * error {
53+ PrepareError :: MissingCargoToml => {
54+ TestResult :: BrokenCrate ( BrokenReason :: CargoToml )
55+ }
56+ PrepareError :: InvalidCargoTomlSyntax => {
57+ TestResult :: BrokenCrate ( BrokenReason :: CargoToml )
58+ }
59+ PrepareError :: YankedDependencies ( _) => {
60+ TestResult :: BrokenCrate ( BrokenReason :: Yanked )
61+ }
62+ PrepareError :: MissingDependencies ( _) => {
63+ TestResult :: BrokenCrate ( BrokenReason :: MissingDependencies )
64+ }
65+ PrepareError :: PrivateGitRepository => {
66+ TestResult :: BrokenCrate ( BrokenReason :: MissingGitRepository )
67+ }
68+ _ => {
69+ let reason = failure_reason ( & err) ;
70+ if reason. is_spurious ( ) || matches ! ( reason, FailureReason :: Unknown ) {
71+ TestResult :: PrepareFail ( reason)
72+ } else {
73+ TestResult :: BrokenCrate ( BrokenReason :: Unknown )
74+ }
75+ }
76+ } ;
6377
64- if let Some ( reason) = reason {
65- Err ( err. context ( OverrideResult ( TestResult :: BrokenCrate ( reason) ) ) )
66- } else {
67- Err ( err)
78+ return Err ( err. context ( OverrideResult ( reason) ) ) ;
6879 }
80+
81+ Err ( err)
6982 }
7083 }
7184}
0 commit comments