link_checker: Handle non-success status codes (#897)
The can_fail_404_links() test doesn't encounter a 404 response in actuality, since the google.comys domain doesn't resolve. When the test is updated such that the response's status code is a 404, the test fails because the check_url() function doesn't handle non-success responses how the test's assertions expect. This commit updates check_url() to handle non-success responses, treating them much like errors.
This commit is contained in:
parent
b63c563622
commit
2f1b592ab4
|
@ -71,7 +71,37 @@ pub fn check_url(url: &str, config: &LinkChecker) -> LinkResult {
|
|||
Err(e) => LinkResult { code: None, error: Some(e.to_string()) },
|
||||
}
|
||||
}
|
||||
Ok(response) => LinkResult { code: Some(response.status()), error: None },
|
||||
Ok(response) => {
|
||||
if response.status().is_success() {
|
||||
LinkResult { code: Some(response.status()), error: None }
|
||||
} else {
|
||||
let error_string = if response.status().is_informational() {
|
||||
String::from(format!(
|
||||
"Informational status code ({}) received",
|
||||
response.status()
|
||||
))
|
||||
} else if response.status().is_redirection() {
|
||||
String::from(format!(
|
||||
"Redirection status code ({}) received",
|
||||
response.status()
|
||||
))
|
||||
} else if response.status().is_client_error() {
|
||||
String::from(format!(
|
||||
"Client error status code ({}) received",
|
||||
response.status()
|
||||
))
|
||||
} else if response.status().is_server_error() {
|
||||
String::from(format!(
|
||||
"Server error status code ({}) received",
|
||||
response.status()
|
||||
))
|
||||
} else {
|
||||
String::from("Non-success status code received")
|
||||
};
|
||||
|
||||
LinkResult { code: None, error: Some(error_string) }
|
||||
}
|
||||
}
|
||||
Err(e) => LinkResult { code: None, error: Some(e.description().to_string()) },
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue