diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-07-14 04:15:39 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-14 04:15:39 +0000 |
commit | e5f354cf58ac8aa80b2812a9d84d6854ecafb405 (patch) | |
tree | 7ce79bcd4233582a876480b8be0db1751d6b93ba /test | |
parent | fb65331a559ce3a51640ef6431562eea6cd39725 (diff) | |
parent | 137a9abb666661d1546d471e61321a94ead2eca2 (diff) | |
download | nix-e5f354cf58ac8aa80b2812a9d84d6854ecafb405.zip |
Merge #1758
1758: Add chflags r=rtzoeller a=asomers
Co-authored-by: musikid <musikid@outlook.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/sys/mod.rs | 1 | ||||
-rw-r--r-- | test/sys/test_stat.rs | 27 |
2 files changed, 28 insertions, 0 deletions
diff --git a/test/sys/mod.rs b/test/sys/mod.rs index ed4ad736..20312120 100644 --- a/test/sys/mod.rs +++ b/test/sys/mod.rs @@ -29,6 +29,7 @@ mod test_signalfd; mod test_socket; #[cfg(not(any(target_os = "redox")))] mod test_sockopt; +mod test_stat; #[cfg(any(target_os = "android", target_os = "linux"))] mod test_sysinfo; #[cfg(not(any( diff --git a/test/sys/test_stat.rs b/test/sys/test_stat.rs new file mode 100644 index 00000000..2f26e789 --- /dev/null +++ b/test/sys/test_stat.rs @@ -0,0 +1,27 @@ +#[cfg(target_os = "freebsd")] +#[test] +fn test_chflags() { + use nix::{ + sys::stat::{fstat, FileFlag}, + unistd::chflags, + }; + use std::os::unix::io::AsRawFd; + use tempfile::NamedTempFile; + + let f = NamedTempFile::new().unwrap(); + + let initial = FileFlag::from_bits_truncate( + fstat(f.as_raw_fd()).unwrap().st_flags.into(), + ); + // UF_OFFLINE is preserved by all FreeBSD file systems, but not interpreted + // in any way, so it's handy for testing. + let commanded = initial ^ FileFlag::UF_OFFLINE; + + chflags(f.path(), commanded).unwrap(); + + let changed = FileFlag::from_bits_truncate( + fstat(f.as_raw_fd()).unwrap().st_flags.into(), + ); + + assert_eq!(commanded, changed); +} |