1#[cfg(not(any(target_os = "redox", target_os = "wasi")))] 2#[test] 3fn 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