summaryrefslogtreecommitdiffstats
path: root/vendor/rustix/tests/fs/futimens.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rustix/tests/fs/futimens.rs')
-rw-r--r--vendor/rustix/tests/fs/futimens.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/rustix/tests/fs/futimens.rs b/vendor/rustix/tests/fs/futimens.rs
new file mode 100644
index 000000000..81f8b8a27
--- /dev/null
+++ b/vendor/rustix/tests/fs/futimens.rs
@@ -0,0 +1,42 @@
+#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
+#[test]
+fn test_futimens() {
+ use rustix::fs::{cwd, fstat, futimens, openat, Mode, OFlags, Timespec, Timestamps};
+
+ let tmp = tempfile::tempdir().unwrap();
+ let dir = openat(cwd(), tmp.path(), OFlags::RDONLY, Mode::empty()).unwrap();
+
+ let foo = openat(
+ &dir,
+ "foo",
+ OFlags::CREATE | OFlags::WRONLY | OFlags::CLOEXEC,
+ Mode::empty(),
+ )
+ .unwrap();
+
+ let times = Timestamps {
+ last_access: Timespec {
+ tv_sec: 44000,
+ tv_nsec: 45000,
+ },
+ last_modification: Timespec {
+ tv_sec: 46000,
+ tv_nsec: 47000,
+ },
+ };
+ futimens(&foo, &times).unwrap();
+
+ let after = fstat(&foo).unwrap();
+
+ assert_eq!(times.last_modification.tv_sec as u64, after.st_mtime as u64);
+ #[cfg(not(target_os = "netbsd"))]
+ assert_eq!(
+ times.last_modification.tv_nsec as u64,
+ after.st_mtime_nsec as u64
+ );
+ #[cfg(target_os = "netbsd")]
+ assert_eq!(
+ times.last_modification.tv_nsec as u64,
+ after.st_mtimensec as u64
+ );
+}