about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--build_system/tests.rs23
-rw-r--r--build_system/utils.rs13
2 files changed, 17 insertions, 19 deletions
diff --git a/build_system/tests.rs b/build_system/tests.rs
index 0d158c21c03..091fc83b0ac 100644
--- a/build_system/tests.rs
+++ b/build_system/tests.rs
@@ -447,26 +447,11 @@ impl<'a> TestRunner<'a> {
     }
 
     fn run_out_command(&self, name: &str, args: &[&str]) {
-        let mut full_cmd = vec![];
+        let mut cmd = self
+            .target_compiler
+            .run_with_runner(BUILD_EXAMPLE_OUT_DIR.to_path(&self.dirs).join(name));
 
-        // Prepend the RUN_WRAPPER's
-        if !self.target_compiler.runner.is_empty() {
-            full_cmd.extend(self.target_compiler.runner.iter().cloned());
-        }
-
-        full_cmd.push(
-            BUILD_EXAMPLE_OUT_DIR.to_path(&self.dirs).join(name).to_str().unwrap().to_string(),
-        );
-
-        for arg in args {
-            full_cmd.push(arg.to_string());
-        }
-
-        let mut cmd_iter = full_cmd.into_iter();
-        let first = cmd_iter.next().unwrap();
-
-        let mut cmd = Command::new(first);
-        cmd.args(cmd_iter);
+        cmd.args(args);
 
         spawn_and_wait(cmd);
     }
diff --git a/build_system/utils.rs b/build_system/utils.rs
index 4bb6e21be9f..89264f04299 100644
--- a/build_system/utils.rs
+++ b/build_system/utils.rs
@@ -1,3 +1,4 @@
+use std::ffi::OsStr;
 use std::path::{Path, PathBuf};
 use std::process::{self, Command};
 use std::sync::atomic::{AtomicBool, Ordering};
@@ -59,6 +60,18 @@ impl Compiler {
             }
         }
     }
+
+    pub(crate) fn run_with_runner(&self, program: impl AsRef<OsStr>) -> Command {
+        if self.runner.is_empty() {
+            Command::new(program)
+        } else {
+            let mut runner_iter = self.runner.iter();
+            let mut cmd = Command::new(runner_iter.next().unwrap());
+            cmd.args(runner_iter);
+            cmd.arg(program);
+            cmd
+        }
+    }
 }
 
 pub(crate) struct CargoProject {