From 137a9abb666661d1546d471e61321a94ead2eca2 Mon Sep 17 00:00:00 2001 From: musikid Date: Wed, 27 Apr 2022 12:23:56 +0200 Subject: Add chflags --- test/sys/test_stat.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 test/sys/test_stat.rs (limited to 'test/sys/test_stat.rs') 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); +} -- cgit v1.2.3