Skip to content

Commit e089178

Browse files
committed
file module unit tests completed
1 parent 68957b1 commit e089178

1 file changed

Lines changed: 59 additions & 3 deletions

File tree

src/files.rs

Lines changed: 59 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
//! The module for working with and loading the content from `sql` files
22
use std::fs;
33
use std::io;
4-
use std::io::Error;
54
use std::path::{Path, PathBuf};
65

76
pub struct SqlFilesList {
@@ -15,8 +14,13 @@ impl SqlFilesList {
1514
sql_files: recursive_scan,
1615
})
1716
}
18-
pub fn sql_files(&self) -> &Vec<PathBuf> {
19-
return &self.sql_files;
17+
pub fn sql_files(&self) -> &[PathBuf] {
18+
&self.sql_files
19+
}
20+
pub fn sql_files_sorted(&self) -> Vec<&PathBuf> {
21+
let mut files: Vec<&PathBuf> = self.sql_files.iter().collect();
22+
files.sort();
23+
files
2024
}
2125
}
2226

@@ -119,4 +123,56 @@ mod tests {
119123
// Optional cleanup
120124
let _ = fs::remove_dir_all(&base);
121125
}
126+
127+
#[test]
128+
fn test_sql_file_list() {
129+
let base = env::temp_dir().join("recursive_scan_test2");
130+
let _ = fs::remove_dir_all(&base);
131+
fs::create_dir_all(&base).unwrap();
132+
let sub = base.join("subdir");
133+
fs::create_dir_all(&sub).unwrap();
134+
let file1 = base.join("one.sql");
135+
let file2 = sub.join("two.sql");
136+
let non_sql1 = base.join("ignore.txt");
137+
let non_sql2 = sub.join("README.md");
138+
fs::File::create(&file1).unwrap();
139+
fs::File::create(&file2).unwrap();
140+
fs::File::create(&non_sql1).unwrap();
141+
fs::File::create(&non_sql2).unwrap();
142+
let sql_file_list = SqlFilesList::new(&base).unwrap();
143+
let mut expected = vec![&file1, &file2];
144+
expected.sort();
145+
assert_eq!(sql_file_list.sql_files_sorted(), expected);
146+
let _ = fs::remove_dir_all(&base);
147+
}
148+
#[test]
149+
fn test_sql_file_read() {
150+
let base = env::temp_dir().join("recursive_scan_test3");
151+
let _ = fs::remove_dir_all(&base);
152+
fs::create_dir_all(&base).unwrap();
153+
let sub = base.join("subdir");
154+
fs::create_dir_all(&sub).unwrap();
155+
let file1 = base.join("one.sql");
156+
let file2 = sub.join("two.sql");
157+
let non_sql1 = base.join("ignore.txt");
158+
let non_sql2 = sub.join("README.md");
159+
fs::File::create(&file1).unwrap();
160+
fs::File::create(&file2).unwrap();
161+
fs::File::create(&non_sql1).unwrap();
162+
fs::File::create(&non_sql2).unwrap();
163+
let sql_statement = "CREATE TABLE users( id INTEGER PRIMARY KEY);";
164+
fs::write(&file1, sql_statement).unwrap();
165+
fs::write(&file2, sql_statement).unwrap();
166+
let mut expected = vec![&file1, &file2];
167+
expected.sort();
168+
let mut found: Vec<&PathBuf> = Vec::new();
169+
let sql_file_set = SqlFileSet::new(&base).unwrap();
170+
for file in sql_file_set.iter() {
171+
assert_eq!(file.content, sql_statement);
172+
found.push(&file.path);
173+
}
174+
assert_eq!(found, expected);
175+
let _ = fs::remove_dir_all(&base);
176+
}
177+
122178
}

0 commit comments

Comments
 (0)