1 #[cfg(not(any(
2 target_os = "ios",
3 target_os = "macos",
4 target_os = "redox",
5 target_os = "wasi",
6 )))]
7 #[test]
test_mknodat()8 fn test_mknodat() {
9 use rustix::fs::{cwd, mknodat, openat, statat, unlinkat, AtFlags, FileType, Mode, OFlags};
10
11 let tmp = tempfile::tempdir().unwrap();
12 let dir = openat(cwd(), tmp.path(), OFlags::RDONLY, Mode::empty()).unwrap();
13
14 // Create a regular file. Not supported on FreeBSD or OpenBSD.
15 #[cfg(not(any(target_os = "freebsd", target_os = "openbsd", target_os = "solaris")))]
16 {
17 mknodat(&dir, "foo", FileType::RegularFile, Mode::empty(), 0).unwrap();
18 let stat = statat(&dir, "foo", AtFlags::empty()).unwrap();
19 assert_eq!(FileType::from_raw_mode(stat.st_mode), FileType::RegularFile);
20 unlinkat(&dir, "foo", AtFlags::empty()).unwrap();
21 }
22
23 mknodat(&dir, "foo", FileType::Fifo, Mode::empty(), 0).unwrap();
24 let stat = statat(&dir, "foo", AtFlags::empty()).unwrap();
25 assert_eq!(FileType::from_raw_mode(stat.st_mode), FileType::Fifo);
26 unlinkat(&dir, "foo", AtFlags::empty()).unwrap();
27 }
28