feat(ext4): mkdir and nested directory support
This commit is contained in:
@@ -413,6 +413,48 @@ fn create_with_missing_parent_fails() {
|
||||
assert!(fs.create(b"nodir/file.txt").is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn mkdir_creates_directory() {
|
||||
let mut fs = Ext4::mount(format_ext4_disk()).unwrap();
|
||||
assert!(fs.mkdir(b"subdir"));
|
||||
let mut entries = [DirEntry::empty(); 8];
|
||||
let count = fs.list_dir(b"/", &mut entries).unwrap();
|
||||
assert!(entries[..count].iter().any(|e| e.name.as_bytes() == b"subdir" && e.is_dir));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn create_file_in_subdirectory() {
|
||||
let mut fs = Ext4::mount(format_ext4_disk()).unwrap();
|
||||
assert!(fs.mkdir(b"docs"));
|
||||
let h = fs.create(b"docs/readme").unwrap();
|
||||
fs.write(h, b"content").unwrap();
|
||||
fs.close(h);
|
||||
let h = fs.open(b"docs/readme").unwrap();
|
||||
let mut buf = [0u8; 32];
|
||||
let n = fs.read(h, &mut buf).unwrap();
|
||||
assert_eq!(&buf[..n], b"content");
|
||||
fs.close(h);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn list_subdirectory() {
|
||||
let mut fs = Ext4::mount(format_ext4_disk()).unwrap();
|
||||
assert!(fs.mkdir(b"mydir"));
|
||||
let h1 = fs.create(b"mydir/a.txt").unwrap();
|
||||
fs.close(h1);
|
||||
let h2 = fs.create(b"mydir/b.txt").unwrap();
|
||||
fs.close(h2);
|
||||
let mut entries = [DirEntry::empty(); 8];
|
||||
let count = fs.list_dir(b"mydir", &mut entries).unwrap();
|
||||
assert_eq!(count, 2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn mkdir_nonexistent_parent_fails() {
|
||||
let mut fs = Ext4::mount(format_ext4_disk()).unwrap();
|
||||
assert!(!fs.mkdir(b"noparent/child"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn read_past_eof_returns_zero() {
|
||||
let mut fs = Ext4::mount(format_ext4_disk()).unwrap();
|
||||
|
||||
Reference in New Issue
Block a user