diff --git a/src/libstd/io/process.rs b/src/libstd/io/process.rs index d8be92e451460..8b7d1cd0de580 100644 --- a/src/libstd/io/process.rs +++ b/src/libstd/io/process.rs @@ -1024,32 +1024,6 @@ mod tests { "didn't find RUN_TEST_NEW_ENV inside of:\n\n{}", output); } - #[test] - fn test_remove_from_env() { - use os; - - // save original environment - let old_env = os::getenv("RUN_TEST_NEW_ENV"); - - os::setenv("RUN_TEST_NEW_ENV", "123"); - let prog = env_cmd().env_remove("RUN_TEST_NEW_ENV").spawn().unwrap(); - let result = prog.wait_with_output().unwrap(); - let output = str::from_utf8_lossy(result.output.as_slice()).into_string(); - - // restore original environment - match old_env { - None => { - os::unsetenv("RUN_TEST_NEW_ENV"); - } - Some(val) => { - os::setenv("RUN_TEST_NEW_ENV", val.as_slice()); - } - } - - assert!(!output.as_slice().contains("RUN_TEST_NEW_ENV"), - "found RUN_TEST_NEW_ENV inside of:\n\n{}", output); - } - #[cfg(unix)] pub fn sleeper() -> Process { Command::new("sleep").arg("1000").spawn().unwrap() diff --git a/src/test/run-pass/process-remove-from-env.rs b/src/test/run-pass/process-remove-from-env.rs new file mode 100644 index 0000000000000..eab9c8a95da2c --- /dev/null +++ b/src/test/run-pass/process-remove-from-env.rs @@ -0,0 +1,53 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use std::io::Command; +use std::os; + +#[cfg(all(unix, not(target_os="android")))] +pub fn env_cmd() -> Command { + Command::new("env") +} +#[cfg(target_os="android")] +pub fn env_cmd() -> Command { + let mut cmd = Command::new("/system/bin/sh"); + cmd.arg("-c").arg("set"); + cmd +} + +#[cfg(windows)] +pub fn env_cmd() -> Command { + let mut cmd = Command::new("cmd"); + cmd.arg("/c").arg("set"); + cmd +} + +fn main() { + // save original environment + let old_env = os::getenv("RUN_TEST_NEW_ENV"); + + os::setenv("RUN_TEST_NEW_ENV", "123"); + + let mut cmd = env_cmd(); + cmd.env_remove("RUN_TEST_NEW_ENV"); + + // restore original environment + match old_env { + None => os::unsetenv("RUN_TEST_NEW_ENV"), + Some(val) => os::setenv("RUN_TEST_NEW_ENV", val.as_slice()) + } + + let prog = cmd.spawn().unwrap(); + let result = prog.wait_with_output().unwrap(); + let output = String::from_utf8_lossy(result.output.as_slice()); + + assert!(!output.as_slice().contains("RUN_TEST_NEW_ENV"), + "found RUN_TEST_NEW_ENV inside of:\n\n{}", output); +}