fix writing raw headers, quality_item
This commit is contained in:
@@ -10,7 +10,7 @@ use std::borrow::Cow::{Borrowed, Owned};
|
|||||||
use std::fmt::{self, Show};
|
use std::fmt::{self, Show};
|
||||||
use std::intrinsics::TypeId;
|
use std::intrinsics::TypeId;
|
||||||
use std::raw::TraitObject;
|
use std::raw::TraitObject;
|
||||||
use std::str::FromStr;
|
use std::str::{FromStr, from_utf8};
|
||||||
use std::string::CowString;
|
use std::string::CowString;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::collections::hash_map::{Iter, Entry};
|
use std::collections::hash_map::{Iter, Entry};
|
||||||
@@ -439,7 +439,13 @@ impl fmt::Show for Item {
|
|||||||
None => match self.raw {
|
None => match self.raw {
|
||||||
Some(ref raw) => {
|
Some(ref raw) => {
|
||||||
for part in raw.iter() {
|
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(())
|
Ok(())
|
||||||
},
|
},
|
||||||
@@ -646,6 +652,13 @@ mod tests {
|
|||||||
assert_eq!(s[], "Host: foo.bar\r\nContent-Length: 15\r\n");
|
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]
|
#[test]
|
||||||
fn test_set_raw() {
|
fn test_set_raw() {
|
||||||
let mut headers = Headers::new();
|
let mut headers = Headers::new();
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ pub fn qitem<T>(item: T) -> QualityItem<T> {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_quality_item_show1() {
|
fn test_quality_item_show1() {
|
||||||
let x = qitem(Chunked);
|
let x = qitem(Chunked);
|
||||||
assert_eq!(format!("{}", x), "chunked; q=1.000");
|
assert_eq!(format!("{}", x), "chunked; q=1");
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn test_quality_item_show2() {
|
fn test_quality_item_show2() {
|
||||||
@@ -93,7 +93,7 @@ fn test_quality_item_show3() {
|
|||||||
item: EncodingExt("identity".to_string()),
|
item: EncodingExt("identity".to_string()),
|
||||||
quality: 0.5f32,
|
quality: 0.5f32,
|
||||||
};
|
};
|
||||||
assert_eq!(format!("{}", x), "identity; q=0.500");
|
assert_eq!(format!("{}", x), "identity; q=0.5");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
Reference in New Issue
Block a user