summaryrefslogtreecommitdiff
path: root/test/test_stat.rs
diff options
context:
space:
mode:
authorMarkus Jais <markusjais@gmx.de>2015-02-22 11:37:54 +0100
committerCarl Lerche <me@carllerche.com>2015-03-13 16:11:19 -0700
commitb20b6c80cd98db7e9ff9ee1a377f3fe52f12234f (patch)
tree6b1b3d3d4698bc5d9923d2b1787e38f7bc2993fe /test/test_stat.rs
parent0811c8c194ba1492153bf95dd209c731702544ab (diff)
downloadnix-b20b6c80cd98db7e9ff9ee1a377f3fe52f12234f.zip
added test for fstat
Diffstat (limited to 'test/test_stat.rs')
-rw-r--r--test/test_stat.rs34
1 files changed, 22 insertions, 12 deletions
diff --git a/test/test_stat.rs b/test/test_stat.rs
index ac4a8f08..023cb569 100644
--- a/test/test_stat.rs
+++ b/test/test_stat.rs
@@ -1,17 +1,12 @@
-use nix::sys::stat::stat;
+use nix::sys::stat::{stat, fstat};
-#[test]
-fn test_stat() {
- use nix::fcntl::open;
- use nix::unistd::{close, unlink};
- use nix::fcntl::O_CREAT;
- use nix::sys::stat::S_IWUSR;
-
- let filename = b"target/foo.txt";
- let fd_res = open(filename, O_CREAT, S_IWUSR).unwrap();
- close(fd_res).unwrap(); //.ok().unwrap()); // close right here. We use the file only for the stat test
- let stat_result = stat(filename);
+use nix::fcntl::open;
+use nix::unistd::{close, unlink};
+use nix::fcntl::O_CREAT;
+use nix::sys::stat::{FileStat, S_IWUSR};
+use nix::NixResult;
+fn assert_stat_results(stat_result: NixResult<FileStat>) {
match stat_result {
Ok(stats) => {
assert!(stats.st_dev > 0); // must be positive integer, exact number machine dependent
@@ -27,5 +22,20 @@ fn test_stat() {
}
Err(_) => panic!("stat call failed") // if stats system call fails, something is seriously wrong on that machine
}
+}
+
+
+#[test]
+fn test_stat_and_fstat() {
+ let filename = b"target/foo.txt";
+ let fd = open(filename, O_CREAT, S_IWUSR).unwrap(); // create empty file
+
+ let stat_result = stat(filename);
+ assert_stat_results(stat_result);
+
+ let fstat_result = fstat(fd);
+ assert_stat_results(fstat_result);
+
+ close(fd).unwrap();
unlink(filename).unwrap();
}