mirror of
https://github.com/uutils/coreutils.git
synced 2026-06-10 15:48:22 -07:00
Merge pull request #1014 from Minoru/bugfix/umask-independent-test
tests/chmod: don't make assumptions about umask
This commit is contained in:
Generated
+1
@@ -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",
|
||||
|
||||
@@ -233,6 +233,7 @@ regex="*"
|
||||
rand="*"
|
||||
tempdir="*"
|
||||
unindent="*"
|
||||
lazy_static = "*"
|
||||
|
||||
[[bin]]
|
||||
name = "uutils"
|
||||
|
||||
@@ -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,10 +123,18 @@ fn test_chmod_ugo_copy() {
|
||||
|
||||
#[test]
|
||||
fn test_chmod_many_options() {
|
||||
let _guard = UMASK_MUTEX.lock();
|
||||
|
||||
let original_umask = unsafe {
|
||||
umask(0)
|
||||
};
|
||||
let tests = vec!{
|
||||
TestCase{args: vec!{"-r,a+w", TEST_FILE}, before: 0o444, after: 0o222},
|
||||
};
|
||||
run_tests(tests);
|
||||
unsafe {
|
||||
umask(original_umask);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -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);+) => {
|
||||
|
||||
Reference in New Issue
Block a user