#[macro_use] mod sys_common; #[cfg(not(target_os = "openbsd"))] use std::fs::OpenOptions; #[cfg(not(target_os = "openbsd"))] use system_interface::fs::FileIoExt; #[test] #[cfg(not(any(windows, target_os = "openbsd")))] fn allocate() { let dir = tempfile::tempdir().unwrap(); let file = check!(OpenOptions::new() .create_new(true) .read(true) .write(true) .open(dir.path().join("file"))); assert_eq!(check!(file.metadata()).len(), 0); check!(file.allocate(1024, 1024)); assert_eq!(check!(file.metadata()).len(), 1024 + 1024); check!(file.allocate(1024, 1024)); assert_eq!(check!(file.metadata()).len(), 1024 + 1024); check!(file.allocate(4096, 4096)); assert_eq!(check!(file.metadata()).len(), 4096 + 4096); } #[test] #[cfg(windows)] fn allocate() { let dir = tempfile::tempdir().unwrap(); let file = check!(OpenOptions::new() .create_new(true) .read(true) .write(true) .open(dir.path().join("file"))); assert_eq!(check!(file.metadata()).len(), 0); file.allocate(1024, 1024) .expect_err("allocate should fail on windows"); }