• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #[cfg(not(any(target_os = "redox", target_os = "wasi")))]
2 #[test]
test_long_paths()3 fn test_long_paths() {
4     use rustix::fs::{cwd, mkdirat, openat, Mode, OFlags};
5 
6     let tmp = tempfile::tempdir().unwrap();
7     let dir = openat(cwd(), tmp.path(), OFlags::RDONLY, Mode::empty()).unwrap();
8 
9     #[cfg(libc)]
10     const PATH_MAX: usize = libc::PATH_MAX as usize;
11     #[cfg(linux_raw)]
12     const PATH_MAX: usize = linux_raw_sys::general::PATH_MAX as usize;
13 
14     mkdirat(&dir, "a", Mode::RUSR | Mode::XUSR | Mode::WUSR).unwrap();
15 
16     let mut long_path = String::new();
17     for _ in 0..PATH_MAX / 5 {
18         long_path.push_str("a/../");
19     }
20 
21     let mut too_long_path = String::new();
22     for _ in 0..PATH_MAX / 4 {
23         too_long_path.push_str("a/../");
24     }
25 
26     let _ = openat(&dir, &long_path, OFlags::RDONLY, Mode::empty()).unwrap();
27     let _ = openat(&dir, &too_long_path, OFlags::RDONLY, Mode::empty()).unwrap_err();
28 }
29