@@ -126,13 +126,11 @@ impl IntoIterator for WAL {
126126#[ cfg( test) ]
127127mod tests {
128128 use crate :: wal:: WAL ;
129- use rand:: prelude:: * ;
130- use std:: fs:: { create_dir, remove_dir_all} ;
131129 use std:: fs:: { metadata, File , OpenOptions } ;
132130 use std:: io:: prelude:: * ;
133131 use std:: io:: BufReader ;
134- use std:: path:: PathBuf ;
135132 use std:: time:: { SystemTime , UNIX_EPOCH } ;
133+ use tempfile:: tempdir;
136134
137135 fn check_entry (
138136 reader : & mut BufReader < File > ,
@@ -175,16 +173,14 @@ mod tests {
175173
176174 #[ test]
177175 fn test_write_one ( ) {
178- let mut rng = rand:: rng ( ) ;
179- let dir = PathBuf :: from ( format ! ( "./{}/" , rng. random:: <u32 >( ) ) ) ;
180- create_dir ( & dir) . unwrap ( ) ;
176+ let dir = tempdir ( ) . unwrap ( ) ;
181177
182178 let timestamp = SystemTime :: now ( )
183179 . duration_since ( UNIX_EPOCH )
184180 . unwrap ( )
185181 . as_micros ( ) ;
186182
187- let mut wal = WAL :: new ( & dir) . unwrap ( ) ;
183+ let mut wal = WAL :: new ( dir. path ( ) ) . unwrap ( ) ;
188184 wal. set ( b"Lime" , b"Lime Smoothie" , timestamp) . unwrap ( ) ;
189185 wal. flush ( ) . unwrap ( ) ;
190186
@@ -198,15 +194,11 @@ mod tests {
198194 timestamp,
199195 false ,
200196 ) ;
201-
202- remove_dir_all ( & dir) . unwrap ( ) ;
203197 }
204198
205199 #[ test]
206200 fn test_write_many ( ) {
207- let mut rng = rand:: rng ( ) ;
208- let dir = PathBuf :: from ( format ! ( "./{}/" , rng. random:: <u32 >( ) ) ) ;
209- create_dir ( & dir) . unwrap ( ) ;
201+ let dir = tempdir ( ) . unwrap ( ) ;
210202
211203 let timestamp = SystemTime :: now ( )
212204 . duration_since ( UNIX_EPOCH )
@@ -219,7 +211,7 @@ mod tests {
219211 ( b"Orange" , Some ( b"Orange Smoothie" ) ) ,
220212 ] ;
221213
222- let mut wal = WAL :: new ( & dir) . unwrap ( ) ;
214+ let mut wal = WAL :: new ( dir. path ( ) ) . unwrap ( ) ;
223215
224216 for e in entries. iter ( ) {
225217 wal. set ( e. 0 , e. 1 . unwrap ( ) , timestamp) . unwrap ( ) ;
@@ -232,15 +224,11 @@ mod tests {
232224 for e in entries. iter ( ) {
233225 check_entry ( & mut reader, e. 0 , e. 1 , timestamp, false ) ;
234226 }
235-
236- remove_dir_all ( & dir) . unwrap ( ) ;
237227 }
238228
239229 #[ test]
240230 fn test_write_delete ( ) {
241- let mut rng = rand:: rng ( ) ;
242- let dir = PathBuf :: from ( format ! ( "./{}/" , rng. random:: <u32 >( ) ) ) ;
243- create_dir ( & dir) . unwrap ( ) ;
231+ let dir = tempdir ( ) . unwrap ( ) ;
244232
245233 let timestamp = SystemTime :: now ( )
246234 . duration_since ( UNIX_EPOCH )
@@ -253,7 +241,7 @@ mod tests {
253241 ( b"Orange" , Some ( b"Orange Smoothie" ) ) ,
254242 ] ;
255243
256- let mut wal = WAL :: new ( & dir) . unwrap ( ) ;
244+ let mut wal = WAL :: new ( dir. path ( ) ) . unwrap ( ) ;
257245
258246 for e in entries. iter ( ) {
259247 wal. set ( e. 0 , e. 1 . unwrap ( ) , timestamp) . unwrap ( ) ;
@@ -273,45 +261,37 @@ mod tests {
273261 for e in entries. iter ( ) {
274262 check_entry ( & mut reader, e. 0 , None , timestamp, true ) ;
275263 }
276-
277- remove_dir_all ( & dir) . unwrap ( ) ;
278264 }
279265
280266 #[ test]
281267 fn test_read_wal_none ( ) {
282- let mut rng = rand:: rng ( ) ;
283- let dir = PathBuf :: from ( format ! ( "./{}/" , rng. random:: <u32 >( ) ) ) ;
284- create_dir ( & dir) . unwrap ( ) ;
268+ let dir = tempdir ( ) . unwrap ( ) ;
285269
286- let ( new_wal, new_mem_table) = WAL :: load_from_dir ( & dir) . unwrap ( ) ;
270+ let ( new_wal, new_mem_table) = WAL :: load_from_dir ( dir. path ( ) ) . unwrap ( ) ;
287271 assert_eq ! ( new_mem_table. len( ) , 0 ) ;
288272
289273 let m = metadata ( new_wal. path ) . unwrap ( ) ;
290274 assert_eq ! ( m. len( ) , 0 ) ;
291-
292- remove_dir_all ( & dir) . unwrap ( ) ;
293275 }
294276
295277 #[ test]
296278 fn test_read_wal_one ( ) {
297- let mut rng = rand:: rng ( ) ;
298- let dir = PathBuf :: from ( format ! ( "./{}/" , rng. random:: <u32 >( ) ) ) ;
299- create_dir ( & dir) . unwrap ( ) ;
279+ let dir = tempdir ( ) . unwrap ( ) ;
300280
301281 let entries: Vec < ( & [ u8 ] , Option < & [ u8 ] > ) > = vec ! [
302282 ( b"Apple" , Some ( b"Apple Smoothie" ) ) ,
303283 ( b"Lime" , Some ( b"Lime Smoothie" ) ) ,
304284 ( b"Orange" , Some ( b"Orange Smoothie" ) ) ,
305285 ] ;
306286
307- let mut wal = WAL :: new ( & dir) . unwrap ( ) ;
287+ let mut wal = WAL :: new ( dir. path ( ) ) . unwrap ( ) ;
308288
309289 for ( i, e) in entries. iter ( ) . enumerate ( ) {
310290 wal. set ( e. 0 , e. 1 . unwrap ( ) , i as u128 ) . unwrap ( ) ;
311291 }
312292 wal. flush ( ) . unwrap ( ) ;
313293
314- let ( new_wal, new_mem_table) = WAL :: load_from_dir ( & dir) . unwrap ( ) ;
294+ let ( new_wal, new_mem_table) = WAL :: load_from_dir ( dir. path ( ) ) . unwrap ( ) ;
315295
316296 let file = OpenOptions :: new ( ) . read ( true ) . open ( & new_wal. path ) . unwrap ( ) ;
317297 let mut reader = BufReader :: new ( file) ;
@@ -324,22 +304,18 @@ mod tests {
324304 assert_eq ! ( mem_e. value. as_ref( ) . unwrap( ) . as_slice( ) , e. 1 . unwrap( ) ) ;
325305 assert_eq ! ( mem_e. timestamp, i as u128 ) ;
326306 }
327-
328- remove_dir_all ( & dir) . unwrap ( ) ;
329307 }
330308
331309 #[ test]
332310 fn test_read_wal_multiple ( ) {
333- let mut rng = rand:: rng ( ) ;
334- let dir = PathBuf :: from ( format ! ( "./{}/" , rng. random:: <u32 >( ) ) ) ;
335- create_dir ( & dir) . unwrap ( ) ;
311+ let dir = tempdir ( ) . unwrap ( ) ;
336312
337313 let entries_1: Vec < ( & [ u8 ] , Option < & [ u8 ] > ) > = vec ! [
338314 ( b"Apple" , Some ( b"Apple Smoothie" ) ) ,
339315 ( b"Lime" , Some ( b"Lime Smoothie" ) ) ,
340316 ( b"Orange" , Some ( b"Orange Smoothie" ) ) ,
341317 ] ;
342- let mut wal_1 = WAL :: new ( & dir) . unwrap ( ) ;
318+ let mut wal_1 = WAL :: new ( dir. path ( ) ) . unwrap ( ) ;
343319 for ( i, e) in entries_1. iter ( ) . enumerate ( ) {
344320 wal_1. set ( e. 0 , e. 1 . unwrap ( ) , i as u128 ) . unwrap ( ) ;
345321 }
@@ -350,13 +326,13 @@ mod tests {
350326 ( b"Blueberry" , Some ( b"Blueberry Smoothie" ) ) ,
351327 ( b"Orange" , Some ( b"Orange Milkshake" ) ) ,
352328 ] ;
353- let mut wal_2 = WAL :: new ( & dir) . unwrap ( ) ;
329+ let mut wal_2 = WAL :: new ( dir. path ( ) ) . unwrap ( ) ;
354330 for ( i, e) in entries_2. iter ( ) . enumerate ( ) {
355331 wal_2. set ( e. 0 , e. 1 . unwrap ( ) , ( i + 3 ) as u128 ) . unwrap ( ) ;
356332 }
357333 wal_2. flush ( ) . unwrap ( ) ;
358334
359- let ( new_wal, new_mem_table) = WAL :: load_from_dir ( & dir) . unwrap ( ) ;
335+ let ( new_wal, new_mem_table) = WAL :: load_from_dir ( dir. path ( ) ) . unwrap ( ) ;
360336
361337 let file = OpenOptions :: new ( ) . read ( true ) . open ( & new_wal. path ) . unwrap ( ) ;
362338 let mut reader = BufReader :: new ( file) ;
@@ -383,7 +359,5 @@ mod tests {
383359 assert_eq ! ( mem_e. value. as_ref( ) . unwrap( ) . as_slice( ) , e. 1 . unwrap( ) ) ;
384360 assert_eq ! ( mem_e. timestamp, ( i + 3 ) as u128 ) ;
385361 }
386-
387- remove_dir_all ( & dir) . unwrap ( ) ;
388362 }
389363}
0 commit comments