diff --git a/Cargo.lock b/Cargo.lock index 613f6136e..c0cf8d330 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -35,6 +35,7 @@ dependencies = [ "id 0.0.1", "install 0.0.1", "kill 0.0.1", + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "link 0.0.1", "ln 0.0.1", diff --git a/Cargo.toml b/Cargo.toml index 69741eaa7..5fd1a295b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -233,6 +233,7 @@ regex="*" rand="*" tempdir="*" unindent="*" +lazy_static = "*" [[bin]] name = "uutils" diff --git a/tests/test_chmod.rs b/tests/test_chmod.rs index 0695b541e..9a81da92f 100644 --- a/tests/test_chmod.rs +++ b/tests/test_chmod.rs @@ -1,6 +1,7 @@ use common::util::*; use std::fs::{metadata, OpenOptions, set_permissions}; use std::os::unix::fs::{OpenOptionsExt, PermissionsExt}; +use std::sync::Mutex; extern crate libc; use self::libc::umask; @@ -9,6 +10,9 @@ use self::libc::umask; static TEST_FILE: &'static str = "file"; static REFERENCE_FILE: &'static str = "reference"; static REFERENCE_PERMS: u32 = 0o247; +lazy_static! { + static ref UMASK_MUTEX: Mutex<()> = Mutex::new(()); +} struct TestCase { args: Vec<&'static str>, @@ -70,6 +74,8 @@ fn test_chmod_octal() { #[test] fn test_chmod_ugoa() { + let _guard = UMASK_MUTEX.lock(); + let last = unsafe { umask(0) }; @@ -117,6 +123,8 @@ fn test_chmod_ugo_copy() { #[test] fn test_chmod_many_options() { + let _guard = UMASK_MUTEX.lock(); + let original_umask = unsafe { umask(0) }; diff --git a/tests/tests.rs b/tests/tests.rs index 3897935e2..b4b16c13e 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -1,6 +1,9 @@ #[macro_use] mod common; +#[macro_use] +extern crate lazy_static; + // For conditional compilation macro_rules! unix_only { ($($fea:expr, $m:ident);+) => {