[snowpatch] [PATCH] jenkins: get_build_status(): give a better error when JSON decoding fails

Andrew Donnellan andrew.donnellan at au1.ibm.com
Fri Apr 8 18:00:24 AEST 2016


If Jenkins returns invalid JSON, use .unwrap_or_else() to print the JSON
decode error when we panic. Ideally, we should fail more gracefully than
this, but this is still an improvement on just using .unwrap().

Signed-off-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>
---
 src/jenkins.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/jenkins.rs b/src/jenkins.rs
index 38a8664..4a69ddc 100644
--- a/src/jenkins.rs
+++ b/src/jenkins.rs
@@ -96,7 +96,8 @@ impl<'a> JenkinsBackend<'a> {
         let mut result_str = String::new();
         resp.read_to_string(&mut result_str)
             .unwrap_or_else(|err| panic!("Couldn't read from server: {}", err));
-        let json = Json::from_str(&result_str).unwrap();
+        let json = Json::from_str(&result_str)
+            .unwrap_or_else(|err| panic!("Couldn't decode JSON: {}", err));
 
         match json.as_object().unwrap().get("building").unwrap().as_boolean().unwrap() {
             true => JenkinsBuildStatus::Running,
-- 
Andrew Donnellan              Software Engineer, OzLabs
andrew.donnellan at au1.ibm.com  Australia Development Lab, Canberra
+61 2 6201 8874 (work)        IBM Australia Limited



More information about the snowpatch mailing list