Skip to content

Commit 4450b96

Browse files
kamalmarhubicarllerche
authored andcommitted
Use tempdir for temporary files in tests
1 parent 67f695a commit 4450b96

File tree

4 files changed

+31
-33
lines changed

4 files changed

+31
-33
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ bitflags = "0.3.2"
2525

2626
[dev-dependencies]
2727
rand = "0.3.8"
28+
tempdir = "0.3"
2829

2930
[dev-dependencies.nix-test]
3031
path = "nix-test"

test/sys/test_uio.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ use std::{cmp, iter};
55
use std::fs::{OpenOptions, remove_file};
66
use std::os::unix::io::AsRawFd;
77

8+
use tempdir::TempDir;
9+
810
#[test]
911
fn test_writev() {
1012
let mut to_write = Vec::with_capacity(16 * 128);
@@ -115,7 +117,9 @@ fn test_pwrite() {
115117
fn test_pread() {
116118
use std::io::Write;
117119

118-
let path = "pread_test_file";
120+
let tempdir = TempDir::new("nix-test_pread").unwrap();
121+
122+
let path = tempdir.path().join("pread_test_file");
119123
let mut file = OpenOptions::new().write(true).read(true).create(true)
120124
.truncate(true).open(path).unwrap();
121125
let file_content: Vec<u8> = (0..64).collect();
@@ -125,8 +129,6 @@ fn test_pread() {
125129
assert_eq!(Ok(16), pread(file.as_raw_fd(), &mut buf, 16));
126130
let expected: Vec<_> = (16..32).collect();
127131
assert_eq!(&buf[..], &expected[..]);
128-
129-
remove_file(path).unwrap();
130132
}
131133

132134
#[test]
@@ -143,8 +145,10 @@ fn test_pwritev() {
143145
IoVec::from_slice(&to_write[64..128]),
144146
];
145147

148+
let tempdir = TempDir::new("nix-test_pwritev").unwrap();
149+
146150
// pwritev them into a temporary file
147-
let path = "pwritev_test_file";
151+
let path = tempdir.path().join("pwritev_test_file");
148152
let mut file = OpenOptions::new().write(true).read(true).create(true)
149153
.truncate(true).open(path).unwrap();
150154

@@ -155,8 +159,6 @@ fn test_pwritev() {
155159
let mut contents = Vec::new();
156160
file.read_to_end(&mut contents).unwrap();
157161
assert_eq!(contents, expected);
158-
159-
remove_file(path).unwrap();
160162
}
161163

162164
#[test]
@@ -167,7 +169,9 @@ fn test_preadv() {
167169
let to_write: Vec<u8> = (0..200).collect();
168170
let expected: Vec<u8> = (100..200).collect();
169171

170-
let path = "preadv_test_file";
172+
let tempdir = TempDir::new("nix-test_preadv").unwrap();
173+
174+
let path = tempdir.path().join("preadv_test_file");
171175

172176
let mut file = OpenOptions::new().read(true).write(true).create(true)
173177
.truncate(true).open(path).unwrap();
@@ -188,6 +192,4 @@ fn test_preadv() {
188192

189193
let all = buffers.concat();
190194
assert_eq!(all, expected);
191-
192-
remove_file(path).unwrap();
193195
}

test/test.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
extern crate nix;
33
extern crate libc;
44
extern crate rand;
5+
extern crate tempdir;
56

67
extern crate nix_test as nixtest;
78

test/test_stat.rs

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1+
use std::fs::File;
12
use std::os::unix::fs::symlink;
2-
use std::str;
3+
use std::os::unix::prelude::AsRawFd;
34

45
use libc::consts::os::posix88;
56

67
use nix::sys::stat::{stat, fstat, lstat};
78

8-
use nix::fcntl::open;
9-
use nix::unistd::{close, unlink};
10-
use nix::fcntl::{O_CREAT, O_RDONLY};
11-
use nix::sys::stat::{FileStat, S_IWUSR, S_IRUSR};
9+
use nix::sys::stat::FileStat;
1210
use nix::Result;
11+
use tempdir::TempDir;
1312

1413
#[allow(unused_comparisons)]
1514
// uid and gid are signed on Windows, but not on other platforms. This function
@@ -65,40 +64,35 @@ fn assert_lstat_results(stat_result: Result<FileStat>) {
6564

6665
#[test]
6766
fn test_stat_and_fstat() {
68-
let filename = b"target/foo.txt".as_ref();
69-
let fd = open(filename, O_CREAT, S_IWUSR).unwrap(); // create empty file
67+
let tempdir = TempDir::new("nix-test_stat_and_fstat").unwrap();
68+
let filename = tempdir.path().join("foo.txt");
69+
let file = File::create(&filename).unwrap();
7070

71-
let stat_result = stat(filename);
71+
let stat_result = stat(&filename);
7272
assert_stat_results(stat_result);
7373

74-
let fstat_result = fstat(fd);
74+
let fstat_result = fstat(file.as_raw_fd());
7575
assert_stat_results(fstat_result);
76-
77-
close(fd).unwrap();
78-
unlink(filename).unwrap();
7976
}
8077

8178
#[test]
8279
fn test_stat_fstat_lstat() {
83-
let filename = b"target/bar.txt".as_ref();
84-
let linkname = b"target/barlink".as_ref();
80+
let tempdir = TempDir::new("nix-test_stat_fstat_lstat").unwrap();
81+
let filename = tempdir.path().join("bar.txt");
82+
let linkname = tempdir.path().join("barlink");
8583

86-
open(filename, O_CREAT, S_IWUSR | S_IRUSR).unwrap(); // create empty file
87-
symlink("bar.txt", str::from_utf8(linkname).unwrap()).unwrap();
88-
let fd = open(linkname, O_RDONLY, S_IRUSR).unwrap();
84+
File::create(&filename).unwrap();
85+
symlink("bar.txt", &linkname).unwrap();
86+
let link = File::open(&linkname).unwrap();
8987

9088
// should be the same result as calling stat,
9189
// since it's a regular file
92-
let stat_result = lstat(filename);
90+
let stat_result = lstat(&filename);
9391
assert_stat_results(stat_result);
9492

95-
let lstat_result = lstat(linkname);
93+
let lstat_result = lstat(&linkname);
9694
assert_lstat_results(lstat_result);
9795

98-
let fstat_result = fstat(fd);
96+
let fstat_result = fstat(link.as_raw_fd());
9997
assert_stat_results(fstat_result);
100-
101-
close(fd).unwrap();
102-
unlink(linkname).unwrap();
103-
unlink(filename).unwrap();
10498
}

0 commit comments

Comments
 (0)