diff --git a/src/runtest.rs b/src/runtest.rs index 10ef326..28325fc 100644 --- a/src/runtest.rs +++ b/src/runtest.rs @@ -347,7 +347,7 @@ impl<'test> TestCx<'test> { .args(&["--unpretty", &pretty_type]) .args(&["--target", &self.config.target]) .arg("-L").arg(&aux_dir) - .args(self.split_maybe_args(&self.config.target_rustcflags)) + .args(self.split_maybe_lib_args(&self.config.target_rustcflags)) .args(&self.props.compile_flags) .envs(self.props.exec_env.clone()); @@ -403,7 +403,7 @@ actual:\n\ rustc.args(&["--cfg", revision]); } - rustc.args(self.split_maybe_args(&self.config.target_rustcflags)); + rustc.args(self.split_maybe_lib_args(&self.config.target_rustcflags)); rustc.args(&self.props.compile_flags); self.compose_and_run_compiler(rustc, Some(src)) @@ -1448,7 +1448,7 @@ actual:\n\ if self.props.force_host { rustc.args(self.split_maybe_args(&self.config.host_rustcflags)); } else { - rustc.args(self.split_maybe_args(&self.config.target_rustcflags)); + rustc.args(self.split_maybe_lib_args(&self.config.target_rustcflags)); } rustc.args(&self.props.compile_flags); @@ -1524,6 +1524,25 @@ actual:\n\ } } + // Split library arguments on "-L" to handle paths with spaces properly. Like + // split_maybe_args(), empty strings filtered out. + fn split_maybe_lib_args(&self, argstr: &Option) -> Vec { + if let Some(ref s) = *argstr { + s.split("-L") + .filter_map(|p| { + let p = p.trim(); + if p.is_empty() { None } else { Some(p.to_owned()) } + }) + .fold(Vec::new(), |mut v, arg| { + v.push("-L".to_owned()); + v.push(arg); + v + }) + } else { + Vec::new() + } + } + fn make_cmdline(&self, command: &Command, libpath: &str) -> String { use util;