run_dep_mode: treat program.args and program.env consistently
This commit is contained in:
parent
5f73da71fb
commit
22b00b9976
1 changed files with 28 additions and 29 deletions
|
|
@ -54,34 +54,13 @@ fn build_so_for_c_ffi_tests() -> PathBuf {
|
|||
so_file_path
|
||||
}
|
||||
|
||||
fn test_config(target: &str, path: &str, mode: Mode, with_dependencies: bool) -> Config {
|
||||
/// Does *not* set any args or env vars, since it is shared between the test runner and
|
||||
/// run_dep_mode.
|
||||
fn miri_config(target: &str, path: &str, mode: Mode, with_dependencies: bool) -> Config {
|
||||
// Miri is rustc-like, so we create a default builder for rustc and modify it
|
||||
let mut program = CommandBuilder::rustc();
|
||||
program.program = miri_path();
|
||||
|
||||
// Add some flags we always want.
|
||||
program.args.push("-Dwarnings".into());
|
||||
program.args.push("-Dunused".into());
|
||||
program.args.push("-Ainternal_features".into());
|
||||
if let Ok(extra_flags) = env::var("MIRIFLAGS") {
|
||||
for flag in extra_flags.split_whitespace() {
|
||||
program.args.push(flag.into());
|
||||
}
|
||||
}
|
||||
program.args.push("-Zui-testing".into());
|
||||
program.args.push("--target".into());
|
||||
program.args.push(target.into());
|
||||
|
||||
// If we're on linux, and we're testing the extern-so functionality,
|
||||
// then build the shared object file for testing external C function calls
|
||||
// and push the relevant compiler flag.
|
||||
if cfg!(target_os = "linux") && path.starts_with("tests/extern-so/") {
|
||||
let so_file_path = build_so_for_c_ffi_tests();
|
||||
let mut flag = std::ffi::OsString::from("-Zmiri-extern-so-file=");
|
||||
flag.push(so_file_path.into_os_string());
|
||||
program.args.push(flag);
|
||||
}
|
||||
|
||||
let mut config = Config {
|
||||
target: Some(target.to_owned()),
|
||||
stderr_filters: STDERR.clone(),
|
||||
|
|
@ -119,17 +98,38 @@ fn run_tests(
|
|||
with_dependencies: bool,
|
||||
tmpdir: &Path,
|
||||
) -> Result<()> {
|
||||
let mut config = test_config(target, path, mode, with_dependencies);
|
||||
let mut config = miri_config(target, path, mode, with_dependencies);
|
||||
|
||||
// Add a test env var to do environment communication tests.
|
||||
config.program.envs.push(("MIRI_ENV_VAR_TEST".into(), Some("0".into())));
|
||||
|
||||
// Let the tests know where to store temp files (they might run for a different target, which can make this hard to find).
|
||||
config.program.envs.push(("MIRI_TEMP".into(), Some(tmpdir.to_owned().into())));
|
||||
|
||||
// If a test ICEs, we want to see a backtrace.
|
||||
config.program.envs.push(("RUST_BACKTRACE".into(), Some("1".into())));
|
||||
|
||||
// Add some flags we always want.
|
||||
config.program.args.push("-Dwarnings".into());
|
||||
config.program.args.push("-Dunused".into());
|
||||
config.program.args.push("-Ainternal_features".into());
|
||||
if let Ok(extra_flags) = env::var("MIRIFLAGS") {
|
||||
for flag in extra_flags.split_whitespace() {
|
||||
config.program.args.push(flag.into());
|
||||
}
|
||||
}
|
||||
config.program.args.push("-Zui-testing".into());
|
||||
config.program.args.push("--target".into());
|
||||
config.program.args.push(target.into());
|
||||
|
||||
// If we're on linux, and we're testing the extern-so functionality,
|
||||
// then build the shared object file for testing external C function calls
|
||||
// and push the relevant compiler flag.
|
||||
if cfg!(target_os = "linux") && path.starts_with("tests/extern-so/") {
|
||||
let so_file_path = build_so_for_c_ffi_tests();
|
||||
let mut flag = std::ffi::OsString::from("-Zmiri-extern-so-file=");
|
||||
flag.push(so_file_path.into_os_string());
|
||||
config.program.args.push(flag);
|
||||
}
|
||||
|
||||
// Handle command-line arguments.
|
||||
let args = ui_test::Args::test()?;
|
||||
let default_bless = env::var_os("RUSTC_BLESS").is_some_and(|v| v != "0");
|
||||
|
|
@ -292,13 +292,12 @@ fn main() -> Result<()> {
|
|||
|
||||
fn run_dep_mode(target: String, mut args: impl Iterator<Item = OsString>) -> Result<()> {
|
||||
let path = args.next().expect("./miri run-dep must be followed by a file name");
|
||||
let mut config = test_config(
|
||||
let config = miri_config(
|
||||
&target,
|
||||
"",
|
||||
Mode::Yolo { rustfix: RustfixMode::Disabled },
|
||||
/* with dependencies */ true,
|
||||
);
|
||||
config.program.args.clear(); // We want to give the user full control over flags
|
||||
let dep_args = config.build_dependencies()?;
|
||||
|
||||
let mut cmd = config.program.build(&config.out_dir);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue