13da5c369Sopenharmony_ci// The conversion is not useless on all platforms. 23da5c369Sopenharmony_ci#[allow(clippy::useless_conversion)] 33da5c369Sopenharmony_ci#[cfg(target_os = "freebsd")] 43da5c369Sopenharmony_ci#[test] 53da5c369Sopenharmony_cifn test_chflags() { 63da5c369Sopenharmony_ci use nix::{ 73da5c369Sopenharmony_ci sys::stat::{fstat, FileFlag}, 83da5c369Sopenharmony_ci unistd::chflags, 93da5c369Sopenharmony_ci }; 103da5c369Sopenharmony_ci use std::os::unix::io::AsRawFd; 113da5c369Sopenharmony_ci use tempfile::NamedTempFile; 123da5c369Sopenharmony_ci 133da5c369Sopenharmony_ci let f = NamedTempFile::new().unwrap(); 143da5c369Sopenharmony_ci 153da5c369Sopenharmony_ci let initial = FileFlag::from_bits_truncate( 163da5c369Sopenharmony_ci fstat(f.as_raw_fd()).unwrap().st_flags.into(), 173da5c369Sopenharmony_ci ); 183da5c369Sopenharmony_ci // UF_OFFLINE is preserved by all FreeBSD file systems, but not interpreted 193da5c369Sopenharmony_ci // in any way, so it's handy for testing. 203da5c369Sopenharmony_ci let commanded = initial ^ FileFlag::UF_OFFLINE; 213da5c369Sopenharmony_ci 223da5c369Sopenharmony_ci chflags(f.path(), commanded).unwrap(); 233da5c369Sopenharmony_ci 243da5c369Sopenharmony_ci let changed = FileFlag::from_bits_truncate( 253da5c369Sopenharmony_ci fstat(f.as_raw_fd()).unwrap().st_flags.into(), 263da5c369Sopenharmony_ci ); 273da5c369Sopenharmony_ci 283da5c369Sopenharmony_ci assert_eq!(commanded, changed); 293da5c369Sopenharmony_ci} 30