Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit acdadff

Browse files
phip1611nicholasbishop
authored andcommitted
media/test: add integration test for creating a directory
1 parent 22f6869 commit acdadff

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

‎uefi-test-runner/src/proto/media/known_disk.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,54 @@ fn test_create_file(directory: &mut Directory) {
187187
file.write(b"test output data").unwrap();
188188
}
189189

190+
/// Test directory creation by
191+
/// - creating a new directory
192+
/// - creating a file in that directory
193+
/// - accessing the new directory via a flat path and a deep path
194+
fn test_create_directory(root_dir: &mut Directory) {
195+
info!("Testing directory creation");
196+
197+
// Create a new directory.
198+
let new_dir = root_dir
199+
.open(
200+
cstr16!("created_dir"),
201+
FileMode::CreateReadWrite,
202+
FileAttribute::DIRECTORY,
203+
)
204+
.expect("failed to create directory");
205+
206+
let mut new_dir = new_dir.into_directory().expect("Should be a directory");
207+
208+
// create new file in new director
209+
let msg = "hello_world";
210+
let file = new_dir
211+
.open(
212+
cstr16!("foobar"),
213+
FileMode::CreateReadWrite,
214+
FileAttribute::empty(),
215+
)
216+
.unwrap();
217+
218+
let mut file = file.into_regular_file().expect("Should be a file!");
219+
file.write(msg.as_bytes()).unwrap();
220+
221+
// now access the new file with a deep path and read its content
222+
let file = root_dir
223+
.open(
224+
cstr16!("created_dir\\foobar"),
225+
FileMode::Read,
226+
FileAttribute::empty(),
227+
)
228+
.expect("Must open created file with deep path.");
229+
let mut file = file.into_regular_file().expect("Should be a file!");
230+
231+
let mut buf = vec![0; msg.len()];
232+
let read_bytes = file.read(&mut buf).unwrap();
233+
let read = &buf[0..read_bytes];
234+
235+
assert_eq!(msg.as_bytes(), read);
236+
}
237+
190238
/// Get the media ID via the BlockIO protocol.
191239
fn get_block_media_id(handle: Handle, bt: &BootServices) -> u32 {
192240
// This cannot be opened in `EXCLUSIVE` mode, as doing so
@@ -339,6 +387,7 @@ pub fn test_known_disk(bt: &BootServices) {
339387
test_delete_warning(&mut root_directory);
340388
test_existing_file(&mut root_directory);
341389
test_create_file(&mut root_directory);
390+
test_create_directory(&mut root_directory);
342391
}
343392

344393
test_raw_disk_io(handle, bt);

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /