Skip to content

Commit ca6cf2b

Browse files
committed
Merge pull request #538 from hyperium/error-cov
test(error): increasing test coverage of error module
2 parents c8086db + d7167e8 commit ca6cf2b

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

src/error.rs

+49-1
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ impl StdError for Error {
5353
fn description(&self) -> &str {
5454
match *self {
5555
Method => "Invalid Method specified",
56-
Uri(_) => "Invalid Request URI specified",
5756
Version => "Invalid HTTP version specified",
5857
Header => "Invalid Header provided",
5958
TooLarge => "Message head is too large",
6059
Status => "Invalid Status provided",
60+
Uri(ref e) => e.description(),
6161
Io(ref e) => e.description(),
6262
Ssl(ref e) => e.description(),
6363
}
@@ -107,3 +107,51 @@ impl From<httparse::Error> for Error {
107107
}
108108
}
109109
}
110+
111+
#[cfg(test)]
112+
mod tests {
113+
use std::error::Error as StdError;
114+
use std::io;
115+
use httparse;
116+
use openssl::ssl::error::SslError;
117+
use url;
118+
use super::Error;
119+
use super::Error::*;
120+
121+
#[test]
122+
fn test_cause() {
123+
let orig = io::Error::new(io::ErrorKind::Other, "other");
124+
let desc = orig.description().to_owned();
125+
let e = Io(orig);
126+
assert_eq!(e.cause().unwrap().description(), desc);
127+
}
128+
129+
macro_rules! from {
130+
($from:expr => $error:pat) => {
131+
match Error::from($from) {
132+
$error => (),
133+
_ => panic!("{:?}", $from)
134+
}
135+
}
136+
}
137+
138+
#[test]
139+
fn test_from() {
140+
141+
from!(io::Error::new(io::ErrorKind::Other, "other") => Io(..));
142+
from!(url::ParseError::EmptyHost => Uri(..));
143+
144+
from!(SslError::StreamError(io::Error::new(io::ErrorKind::Other, "ssl")) => Io(..));
145+
from!(SslError::SslSessionClosed => Ssl(..));
146+
147+
148+
from!(httparse::Error::HeaderName => Header);
149+
from!(httparse::Error::HeaderName => Header);
150+
from!(httparse::Error::HeaderValue => Header);
151+
from!(httparse::Error::NewLine => Header);
152+
from!(httparse::Error::Status => Status);
153+
from!(httparse::Error::Token => Header);
154+
from!(httparse::Error::TooManyHeaders => TooLarge);
155+
from!(httparse::Error::Version => Version);
156+
}
157+
}

0 commit comments

Comments
 (0)