about summary refs log tree commit diff
diff options
context:
space:
mode:
authorkennytm <kennytm@gmail.com>2018-02-28 19:15:36 +0800
committerGitHub <noreply@github.com>2018-02-28 19:15:36 +0800
commita3fecfb8e95e6a822c94e55f8729edb040dd1467 (patch)
treefdcff0ef64d41ea9975a1aad013c89fa1a78b0ea
parent428f00250d3cc859090c7db0e5e5df15b744cc02 (diff)
parent70db41cdf74589c957cb930cdd58ebf6bafee5af (diff)
downloadrust-a3fecfb8e95e6a822c94e55f8729edb040dd1467.tar.gz
rust-a3fecfb8e95e6a822c94e55f8729edb040dd1467.zip
Rollup merge of #48488 - varkor:handle-gdb-error-compiletest, r=michaelwoerister
Handle gdb command failure gracefully in compiletest

Previously, if the gdb command was available, but threw an error, compiletest would panic.  This is obviously not good. Now, gdb is treated as missing if calling `gdb --version` does not output anything on stdout.
-rw-r--r--src/tools/compiletest/src/main.rs17
1 files changed, 6 insertions, 11 deletions
diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs
index e3d453a991d..304143eaa0b 100644
--- a/src/tools/compiletest/src/main.rs
+++ b/src/tools/compiletest/src/main.rs
@@ -736,17 +736,12 @@ fn analyze_gdb(gdb: Option<String>) -> (Option<String>, Option<u32>, bool) {
         Some(ref s) => s,
     };
 
-    let version_line = Command::new(gdb)
-        .arg("--version")
-        .output()
-        .map(|output| {
-            String::from_utf8_lossy(&output.stdout)
-                .lines()
-                .next()
-                .unwrap()
-                .to_string()
-        })
-        .ok();
+    let mut version_line = None;
+    if let Ok(output) = Command::new(gdb).arg("--version").output() {
+        if let Some(first_line) = String::from_utf8_lossy(&output.stdout).lines().next() {
+            version_line = Some(first_line.to_string());
+        }
+    }
 
     let version = match version_line {
         Some(line) => extract_gdb_version(&line),