Skip to content

Commit 7a9f7c6

Browse files
timrobertsdevRenTrieu
authored andcommitted
WIP tests - squash me
1 parent 60a4346 commit 7a9f7c6

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

uefi-test-runner/src/proto/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ pub fn test() {
4242
target_arch = "aarch64"
4343
))]
4444
shim::test();
45+
shell::test();
4546
tcg::test();
4647
}
4748

@@ -96,6 +97,7 @@ mod shell_params;
9697
target_arch = "arm",
9798
target_arch = "aarch64"
9899
))]
100+
mod shell;
99101
mod shim;
100102
mod string;
101103
mod tcg;

uefi-test-runner/src/proto/shell.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
use uefi::CStr16;
2+
use uefi::prelude::BootServices;
3+
use uefi::proto::shell::Shell;
4+
5+
pub fn test(bt: &BootServices) {
6+
info!("Running shell protocol tests");
7+
8+
let handle = bt.get_handle_for_protocol::<Shell>().expect("No Shell handles");
9+
10+
let mut shell = bt
11+
.open_protocol_exclusive::<Shell>(handle)
12+
.expect("Failed to open Shell protocol");
13+
14+
// create some files
15+
let mut test_buf = [0u16; 12];
16+
let test_str = CStr16::from_str_with_buf("test", &mut test_buf).unwrap();
17+
shell.create_file(test_str, 0);
18+
19+
// get file tree
20+
let mut str_buf = [0u16; 12];
21+
let str_str = CStr16::from_str_with_buf(r"Z:\*", &mut str_buf).unwrap();
22+
let res = shell.find_files(str_str);
23+
let list = res.unwrap();
24+
let list = list.unwrap();
25+
let first = list.first();
26+
27+
info!("filetree test successful")
28+
}

uefi/src/proto/shell/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,11 @@ impl Shell {
175175
/// TODO
176176
pub fn find_files(&self, file_pattern: &CStr16) -> Result<Option<FileList>> {
177177
let mut out_list: MaybeUninit<*mut ShellFileInfo> = MaybeUninit::uninit();
178-
(self.find_files)(file_pattern, out_list.as_mut_ptr()).to_result_with_val(|| {
178+
let mut out_ptr = out_list.as_mut_ptr();
179+
if out_ptr.is_null() {
180+
panic!("outptr null");
181+
}
182+
(self.find_files)(file_pattern, out_ptr).to_result_with_val(|| {
179183
// safety: if we're here, out_list is valid, but maybe null
180184
let out_list = unsafe { out_list.assume_init() };
181185
if out_list.is_null() {

0 commit comments

Comments
 (0)