1use std::path::{Path, PathBuf};
4
5pub fn get_all_file_from_folder<P>(path: P) -> Vec<PathBuf>
6where
7 P: AsRef<Path>,
8{
9 let walkdir = walkdir::WalkDir::new(path);
10
11 let result: Vec<_> = walkdir
12 .into_iter()
13 .filter_map(|file| file.ok())
14 .filter(|normal_file| normal_file.metadata().unwrap().is_file())
15 .map(|x| x.into_path())
16 .collect();
17
18 result
19}
20
21#[cfg(feature = "extra_fs")]
23pub mod extra {
24 use assert_fs::{fixture::ChildPath, prelude::*};
25 use rand::Rng;
26 use std::{cmp, fs::File, io::BufWriter, io::Write};
27
28 pub fn generate_random_file(
29 size: usize,
30 ) -> (assert_fs::TempDir, ChildPath) {
31 let temp = assert_fs::TempDir::new().unwrap();
32 let input_file = temp.child("random_file.txt");
33
34 let f = File::create(input_file.path()).unwrap();
35 let mut writer = BufWriter::new(f);
36
37 let mut rng = rand::thread_rng();
38 let mut buffer = [0; 1024];
39 let mut remaining_size = size;
40
41 while remaining_size > 0 {
42 let to_write = cmp::min(remaining_size, buffer.len());
43 let buffer = &mut buffer[..to_write];
44 rng.fill(buffer);
45 writer.write_all(buffer).unwrap();
46
47 remaining_size -= to_write;
48 }
49
50 (temp, input_file)
51 }
52
53 pub fn generate_random_folder_with_files(
54 value_files: usize,
55 size: usize,
56 ) -> (assert_fs::TempDir, Vec<ChildPath>) {
57 let temp = assert_fs::TempDir::new().unwrap();
58 let mut input_files = Vec::with_capacity(value_files);
59
60 for i in 0..value_files {
61 let input_file = temp.child(format!("random_file_{}.txt", i));
62
63 let f = File::create(input_file.path()).unwrap();
64 let mut writer = BufWriter::new(f);
65
66 let mut rng = rand::thread_rng();
67 let mut buffer = [0; 1024];
68 let mut remaining_size = size;
69
70 while remaining_size > 0 {
71 let to_write = cmp::min(remaining_size, buffer.len());
72 let buffer = &mut buffer[..to_write];
73 rng.fill(buffer);
74 writer.write_all(buffer).unwrap();
75
76 remaining_size -= to_write;
77 }
78
79 input_files.push(input_file);
80 }
81
82 (temp, input_files)
83 }
84}