about summary refs log tree commit diff
path: root/src/libtest/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libtest/lib.rs')
-rw-r--r--src/libtest/lib.rs22
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.