#![cfg(any(target_os = "linux", target_os = "freebsd"))]
mod common;
use std::fs;
use common::OfsTestContext;
use test_context::test_context;
use walkdir::WalkDir;
#[test_context(OfsTestContext)]
#[test]
fn test_path(ctx: &mut OfsTestContext) {
let actual_entries = [
("dir1", false),
("dir2", false),
("dir3", false),
("dir3/dir4", false),
("dir3/dir5", false),
("dir3/file3", true),
("dir3/file4", true),
("file1", true),
("file2", true),
]
.into_iter()
.map(|(x, y)| (x.to_string(), y))
.collect::<Vec<_>>();
for (path, is_file) in actual_entries.iter() {
let path = ctx.mount_point.path().join(path);
match is_file {
true => fs::write(path, "hello").unwrap(),
false => fs::create_dir(path).unwrap(),
}
}
assert_eq!(
actual_entries,
WalkDir::new(ctx.mount_point.path())
.min_depth(1)
.max_depth(2)
.sort_by_file_name()
.into_iter()
.map(|x| {
let x = x.unwrap();
(
x.path()
.strip_prefix(&ctx.mount_point)
.unwrap()
.to_str()
.unwrap()
.to_string(),
x.file_type().is_file(),
)
})
.collect::<Vec<_>>()
);
}