|
4 | 4 | #![feature(io_error_more)]
|
5 | 5 | #![feature(io_error_uncategorized)]
|
6 | 6 |
|
7 |
| -use std::ffi::CString; |
| 7 | +use std::collections::HashMap; |
| 8 | +use std::ffi::{CString, OsString}; |
8 | 9 | use std::fs::{
|
9 | 10 | create_dir, read_dir, read_link, remove_dir, remove_dir_all, remove_file, rename, File,
|
10 | 11 | OpenOptions,
|
@@ -394,29 +395,34 @@ fn test_directory() {
|
394 | 395 | // Creating a directory when it already exists should fail.
|
395 | 396 | assert_eq!(ErrorKind::AlreadyExists, create_dir(&dir_path).unwrap_err().kind());
|
396 | 397 |
|
397 |
| - // Create some files inside the directory |
| 398 | + // Create some files and dirs inside the directory |
398 | 399 | let path_1 = dir_path.join("test_file_1");
|
399 | 400 | drop(File::create(&path_1).unwrap());
|
400 | 401 | let path_2 = dir_path.join("test_file_2");
|
401 | 402 | drop(File::create(&path_2).unwrap());
|
402 |
| - // Test that the files are present inside the directory |
403 |
| - let dir_iter = read_dir(&dir_path).unwrap(); |
404 |
| - let mut file_names = dir_iter.map(|e| e.unwrap().file_name()).collect::<Vec<_>>(); |
405 |
| - file_names.sort_unstable(); |
406 |
| - assert_eq!(file_names, vec!["test_file_1", "test_file_2"]); |
| 403 | + let dir_1 = dir_path.join("test_dir_1"); |
| 404 | + create_dir(&dir_1).unwrap(); |
407 | 405 | // Test that read_dir metadata calls succeed
|
408 | 406 | assert_eq!(
|
409 |
| - &[true, true], |
410 |
| - &*read_dir(&dir_path) |
| 407 | + HashMap::from([ |
| 408 | + (OsString::from("test_file_1"), true), |
| 409 | + (OsString::from("test_file_2"), true), |
| 410 | + (OsString::from("test_dir_1"), false) |
| 411 | + ]), |
| 412 | + read_dir(&dir_path) |
411 | 413 | .unwrap()
|
412 |
| - .map(|e| e.unwrap().metadata().unwrap().is_file()) |
413 |
| - .collect::<Vec<_>>() |
| 414 | + .map(|e| { |
| 415 | + let e = e.unwrap(); |
| 416 | + (e.file_name(), e.metadata().unwrap().is_file()) |
| 417 | + }) |
| 418 | + .collect::<HashMap<_, _>>() |
414 | 419 | );
|
415 | 420 | // Deleting the directory should fail, since it is not empty.
|
416 | 421 | assert_eq!(ErrorKind::DirectoryNotEmpty, remove_dir(&dir_path).unwrap_err().kind());
|
417 | 422 | // Clean up the files in the directory
|
418 | 423 | remove_file(&path_1).unwrap();
|
419 | 424 | remove_file(&path_2).unwrap();
|
| 425 | + remove_dir(&dir_1).unwrap(); |
420 | 426 | // Now there should be nothing left in the directory.
|
421 | 427 | let dir_iter = read_dir(&dir_path).unwrap();
|
422 | 428 | let file_names = dir_iter.map(|e| e.unwrap().file_name()).collect::<Vec<_>>();
|
|
0 commit comments