From c7e54d72792d49961930d13e854c8748eee1cd82 Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Mon, 29 Feb 2016 08:44:06 -0500 Subject: [PATCH] Make library paths passed by compiletest tool absolute. Otherwise, changing the current working directory can mess up runtime linking. --- src/compiletest/common.rs | 4 ++-- src/compiletest/compiletest.rs | 18 ++++++++++++++++-- src/compiletest/runtest.rs | 10 +++++----- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/compiletest/common.rs b/src/compiletest/common.rs index 33ec974c527..bfcc1759b95 100644 --- a/src/compiletest/common.rs +++ b/src/compiletest/common.rs @@ -69,10 +69,10 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { #[derive(Clone)] pub struct Config { // The library paths required for running the compiler - pub compile_lib_path: String, + pub compile_lib_path: PathBuf, // The library paths required for running compiled programs - pub run_lib_path: String, + pub run_lib_path: PathBuf, // The rustc executable pub rustc_path: PathBuf, diff --git a/src/compiletest/compiletest.rs b/src/compiletest/compiletest.rs index 96b52eaa0ad..51bc9d71f88 100644 --- a/src/compiletest/compiletest.rs +++ b/src/compiletest/compiletest.rs @@ -118,9 +118,23 @@ fn opt_path(m: &getopts::Matches, nm: &str) -> PathBuf { } } + fn make_absolute(path: PathBuf) -> PathBuf { + if path.is_relative() { + env::current_dir().unwrap().join(path) + } else { + path + } + } + + let filter = if !matches.free.is_empty() { + Some(matches.free[0].clone()) + } else { + None + }; + Config { - compile_lib_path: matches.opt_str("compile-lib-path").unwrap(), - run_lib_path: matches.opt_str("run-lib-path").unwrap(), + compile_lib_path: make_absolute(opt_path(matches, "compile-lib-path")), + run_lib_path: make_absolute(opt_path(matches, "run-lib-path")), rustc_path: opt_path(matches, "rustc-path"), rustdoc_path: opt_path(matches, "rustdoc-path"), python: matches.opt_str("python").unwrap(), diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs index 5293eee9459..efad2038f82 100644 --- a/src/compiletest/runtest.rs +++ b/src/compiletest/runtest.rs @@ -316,7 +316,7 @@ fn print_source(config: &Config, testpaths, pretty_type.to_owned()), props.exec_env.clone(), - &config.compile_lib_path, + config.compile_lib_path.to_str().unwrap(), Some(aux_dir.to_str().unwrap()), Some(src)) } @@ -635,7 +635,7 @@ fn debugger() -> &'static str { testpaths, proc_args, environment, - &config.run_lib_path, + config.run_lib_path.to_str().unwrap(), None, None); } @@ -1315,7 +1315,7 @@ fn exec_compiled_test(config: &Config, props: &TestProps, testpaths, make_run_args(config, props, testpaths), env, - &config.run_lib_path, + config.run_lib_path.to_str().unwrap(), Some(aux_dir.to_str().unwrap()), None) } @@ -1387,7 +1387,7 @@ fn compose_and_run_compiler(config: &Config, props: &TestProps, &aux_testpaths, aux_args, Vec::new(), - &config.compile_lib_path, + config.compile_lib_path.to_str().unwrap(), Some(aux_dir.to_str().unwrap()), None); if !auxres.status.success() { @@ -1410,7 +1410,7 @@ fn compose_and_run_compiler(config: &Config, props: &TestProps, testpaths, args, props.rustc_env.clone(), - &config.compile_lib_path, + config.compile_lib_path.to_str().unwrap(), Some(aux_dir.to_str().unwrap()), input) } -- 2.44.0