• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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