1// The conversion is not useless on all platforms.
2#[allow(clippy::useless_conversion)]
3#[cfg(target_os = "freebsd")]
4#[test]
5fn test_chflags() {
6    use nix::{
7        sys::stat::{fstat, FileFlag},
8        unistd::chflags,
9    };
10    use std::os::unix::io::AsRawFd;
11    use tempfile::NamedTempFile;
12
13    let f = NamedTempFile::new().unwrap();
14
15    let initial = FileFlag::from_bits_truncate(
16        fstat(f.as_raw_fd()).unwrap().st_flags.into(),
17    );
18    // UF_OFFLINE is preserved by all FreeBSD file systems, but not interpreted
19    // in any way, so it's handy for testing.
20    let commanded = initial ^ FileFlag::UF_OFFLINE;
21
22    chflags(f.path(), commanded).unwrap();
23
24    let changed = FileFlag::from_bits_truncate(
25        fstat(f.as_raw_fd()).unwrap().st_flags.into(),
26    );
27
28    assert_eq!(commanded, changed);
29}
30