fix writing raw headers, quality_item

This commit is contained in:
Sean McArthur
2015-01-05 19:16:34 -08:00
parent 4756544a18
commit 23aeb4993a
2 changed files with 17 additions and 4 deletions

View File

@@ -10,7 +10,7 @@ use std::borrow::Cow::{Borrowed, Owned};
use std::fmt::{self, Show};
use std::intrinsics::TypeId;
use std::raw::TraitObject;
use std::str::FromStr;
use std::str::{FromStr, from_utf8};
use std::string::CowString;
use std::collections::HashMap;
use std::collections::hash_map::{Iter, Entry};
@@ -439,7 +439,13 @@ impl fmt::Show for Item {
None => match self.raw {
Some(ref raw) => {
for part in raw.iter() {
try!(write!(fmt, "{}", part.as_slice()));
match from_utf8(part[]) {
Ok(s) => try!(fmt.write_str(s)),
Err(e) => {
error!("raw header value is not utf8. header={}, error={}", part[], e);
return Err(fmt::Error);
}
}
}
Ok(())
},
@@ -646,6 +652,13 @@ mod tests {
assert_eq!(s[], "Host: foo.bar\r\nContent-Length: 15\r\n");
}
#[test]
fn test_headers_show_raw() {
let headers = Headers::from_raw(&mut mem("Content-Length: 10\r\n\r\n")).unwrap();
let s = headers.to_string();
assert_eq!(s, "Content-Length: 10\r\n");
}
#[test]
fn test_set_raw() {
let mut headers = Headers::new();

View File

@@ -79,7 +79,7 @@ pub fn qitem<T>(item: T) -> QualityItem<T> {
#[test]
fn test_quality_item_show1() {
let x = qitem(Chunked);
assert_eq!(format!("{}", x), "chunked; q=1.000");
assert_eq!(format!("{}", x), "chunked; q=1");
}
#[test]
fn test_quality_item_show2() {
@@ -93,7 +93,7 @@ fn test_quality_item_show3() {
item: EncodingExt("identity".to_string()),
quality: 0.5f32,
};
assert_eq!(format!("{}", x), "identity; q=0.500");
assert_eq!(format!("{}", x), "identity; q=0.5");
}
#[test]