diff options
Diffstat (limited to 'src/libtest/lib.rs')
| -rw-r--r-- | src/libtest/lib.rs | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/libtest/lib.rs b/src/libtest/lib.rs index 039b118b327..751dc58450f 100644 --- a/src/libtest/lib.rs +++ b/src/libtest/lib.rs @@ -46,7 +46,7 @@ use stats::Stats; use time::precise_time_ns; use getopts::{OptGroup, optflag, optopt}; use serialize::{json, Decodable}; -use serialize::json::ToJson; +use serialize::json::{Json, ToJson}; use term::Terminal; use term::color::{Color, RED, YELLOW, GREEN, CYAN}; @@ -1018,6 +1018,23 @@ impl ToJson for Metric { } } +// FIXME: remove decode_ after snapshot +#[cfg(stage0)] +fn decode_(json: Json) -> MetricMap { + let mut decoder = json::Decoder::new(json); + MetricMap(Decodable::decode(&mut decoder)) +} + +#[cfg(not(stage0))] +fn decode_(json: Json) -> MetricMap { + let mut decoder = json::Decoder::new(json); + MetricMap(match Decodable::decode(&mut decoder) { + Ok(t) => t, + Err(e) => fail!("failure decoding JSON: {}", e) + }) +} + + impl MetricMap { pub fn new() -> MetricMap { @@ -1034,8 +1051,7 @@ impl MetricMap { assert!(p.exists()); let mut f = File::open(p).unwrap(); let value = json::from_reader(&mut f as &mut io::Reader).unwrap(); - let mut decoder = json::Decoder::new(value); - MetricMap(Decodable::decode(&mut decoder)) + decode_(value) } /// Write MetricDiff to a file. |
